OAuthについてメモ

Posted: 25th 7月 2010 by ryuga in おもう

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使える
 ただし実用はもうしばらく待つべきかも