twitter @Anywhereをやさしく見守ることにする

関連記事

出遅れましたが、ここしばらくこの辺りについて調べていたからには黙っていられませんな。
純粋なOAuth対応などと異なり、JSで簡単実装的な話なので関連記事は多いですね。
「とりあえず使ってみた」は他の人に任せて、以下の点に注目してみてみました。

  • 開発者がやること
  • Authorizationフロー
  • APIアクセスについて
  • サーバサイドのスクリプトとの組み合わせ
  • OAuth WRAPとの関係

開発者がやること

  • 使いたいページでJSを読み込んで、JSを書く。

同様に"JSを読み込んで、FBMLを書く"だけのFacebookConnectと同様に、JSで提供される機能が増えると、導入しやすそう。

Authorizationフロー

フローチャートは省略。

開発者が意識しないJS周りの処理があるものの、ちょっと前にまとめた、このへんと同じような感じでしょう。
では、twitterのログイン画面が出る辺りのクエリパラメータを追ってみましょう。

https://oauth.twitter.com/2/authorize?
oauth_callback_url=http%3A%2F%2Fr-weblife.sakura.ne.jp%2Ftwitter_anywhere_sample%2Fconnect.html
&oauth_mode=flow_web_client
&oauth_client_identifier=qhYTNryY15isrVJ61dzF2Q

あらら、OAuth WRAPのJS Profile/Rich Client Profileとほぼ一緒ですねん。
同意をして、戻されるあたりを確認しましょう。

http://r-weblife.sakura.ne.jp/twitter_anywhere_sample/connect.html#
?oauth_access_token=1(自粛)-(自粛)

戻ってきてからの処理については@stomitaさんのエントリを参照すべき。
iframeの使い方など、細かい話は多々あるとして、FBもGFCも同じような処理といっていいですよね。

APIアクセスについて

こちらも@stomitaさんのエントリを参照すべき。
あとは大先輩のtweetを二つほど紹介。

curl -H 'Authorization: OAuth oauth_access_token="hoge"' 'ttps://api.twitter.com/1/account/verify_credentials.json' が通ってしまう

http://twitter.com/asannou/status/12326798387

oauth_access_tokenは以前から使ってたOAuth consumerのものでもいいので、tokenをさらしてtoken secretを隠してるconsumerなんてほとんどいないと思うけどやばいかも

http://twitter.com/asannou/status/12326952852

なるほどなるほど。OAuth WRAPを意識しているように見えますね。
既にOAuthで発行されているAccessTokenも使えるのはちょっと・・・な気もしますが。

サーバサイドのスクリプトとの組み合わせ

FacebookConnectの場合、JSが頑張ってCookieを発行した後に、別途提供されているPHPなどのライブラリを利用することでサーバサイドの処理と連動させることができます。
GFCも似たような感じになってると思います。
これができると、RPXのようなAuthZの処理部分を簡単に実装できるような感じになるので、良いと思うのですが、、、
今後のアップデートに期待しましょう。

標準化仕様の導入

OAuth WRAPへの隠れ対応を期待していたけど、oauth.twitter.com/2/authorizeからリダイレクトで返されるパラメータが oauth_access_tokenそのものなのでなんかがっかり。friendfeedのJS Profile+α程度か。

http://twitter.com/ritou/status/12391471862

上でもちょこちょこ出てきましたが、個人的にはOAuth WRAP(というかOAuth2.0)で検討されているRich Client Profileへの対応が今回のanywhereでされてるのでは?と思いましたがそうでもなかったと。
verification codeじゃなくaccess tokenを返すのはfriend feedの実装と同じです。

ここまで似たようなしくみできてきたなら、共通仕様にしてしまえばいいじゃん!とますます思ってきました。
FacebookGoogletwitterが考えれと。って思ってたら、ちょっとScopeはずれますが、meeboがなんか新しいこと考えたようです。
次のネタ予告:「XAuthって名前からいろいろ紛らわしい」