FlashでOAuthを使ってみたい!ということで、調べてみたことの自分メモ。
①OAuthについての基本的な流れを追った
ここを読んだ
Twitter API を OAuth で認証するスクリプトを 0 から書いてみた
サンプルはPythonで書かれているけど、流れはわかりやすい。
ただし、デスクトップアプリケーションの説明なので、Webアプリケーションを作る場合より少し手順が多い。
※デスクトップアプリケーションかWebアプリケーションかはここの登録画面で選ぶことができる
アプリケーション登録申請
もしくはここ
アプリケーション登録申請
(どちらで登録しても、ほぼ同じ。ただ、前者の方が、僅かに入力できる項目が多い)
②FlashでOAuthを使いたい
ここを読んだ
AIR/ActionScript3でTwitterのOAuthをするための必要最低限
これも、デスクトップアプリケーションでの説明。
この通り作ったら、OAuth認証できた。
デスクトップアプリケーションでも、Webアプリケーションでも対応できた。
がしかし。
なぜFlash+OAuthについて書かれたページがどれも、デスクトップアプリケーションでの説明なのだろう?
と不思議に思っていたわけなんだけど、謎が解けた。
↑で作ったswfをサーバーにおいてみると、動かない。
クロスドメインでひっかかる。
twitterがtwitter.com以外からのアクセスを受け付けてない(http://twitter.com/crossdomain.xml参照)ので、
OAuthのリクエストが通らずに、セキュリティエラーが出てくる。
完全に見落としていた・・・。
とにかく、
Flashを使ったWebアプリケーションで、OAuthは使えない。 ⇒クロスドメインで引っかかる
Flashを使ったデスクトップアプリケーションなら、OAuthが使える。
webアプリケーションでFlashを使ってTwitterにアクセスしたい場合
PHPなどサーバーサイドのスクリプトと併用しないと、OAuthの認証ができない。
③サーバーサイドなしでOAuthを使いたい
サーバーサイドなしでOAuth対応Webアプリケーションを作るにはどうしたらいいのか?
JavaScriptで検討してみたけど、
JavaScriptでは、OAuthをJavaScriptだけで作ることは不可能。
TwitterクライアントのOAuth対応(Javascript編)
↑このページは参考になった…けど
肝心のコンシューマキーとコンシューマシークレットをどこで設定するのか書いてない。
JSのソースにコンシューマキーとコンシューマシークレットを書くわけにはいかないので
JSだけじゃ実装できないんじゃないかと。
(公開されていない場所にJSを置けるなら別だろう)
詳細は調べていない。
④行き詰って@Anywhereへ
ということで、やっとたどり着いたのが@Anywhere
Twitter公式のAPIで、JavaScriptからサーバーレスでTwitterにアクセスできる。
OAuthもいらない。
Twitter 新 API のドキュメント「Getting Started with @Anywhere」日本語訳
ここも参考になった
[twitter][oauth][javascript] Twitter @Anywhere を斜め上に掘り下げる
サンプルが豊富
Twitterの機能をJSで簡単に導入できる「@Anywhere」の使い方メモ
こんなん。↓
APIキーしか必要ないので、JavaScriptだけで実装できる!
しかも、↑のはサンプルコードをコピーして表示する文言を変更しただけ。簡単!
けれど、安定性はまだ疑わしいので、PHPとかが使えるなら、そっちを使うにこしたことない。
というわけで、PHPもちょっと見直しておかないと・・・。
⑤まとめ:
・デスクトップアプリケーションであれば、FlashからもOAuthを使用した認証が行うことができる
・Webアプリケーションの場合、Flashから、サーバーサイドスクリプトを介さないでOAuth認証を行うことは
現状のtwitter.comのクロスドメインポリシーである限り不可能
・JavaScriptだけでOAuth認証を行うのは基本的に不可能
・でも@Anywhereなら、JavaScriptとAPIキーだけで、OAuth使わずにtwitter使える
ただし実用はもうしばらく待つべきかも



