ネットサービスとかGoogleとか豆知識とか。

Index > Twitter(ツイッター) > TwitterのOAuth EchoにおけるDelegatorの作り方
Twitter(ツイッター)
2010年10月20日 20:41

TwitterのOAuth EchoにおけるDelegatorの作り方

  • このエントリーをはてなブックマークに追加
  • ... PV
スポンサード リンク

OAuth Echo というのを詳しく説明すると長くなってしまうのですが、簡単に言うと Twitter で OAuth 認証済みのアプリケーションから別の Twitter 連携アプリケーションを利用する際に用いられる認証手段です。

たとえば TwitBird から Twitpic の API を利用して写真を投稿する場合に、「その写真をアップロードしようとしているのは誰なのか?」という問題を解決するために用いられます。

自分が運営している Meity も認証を Twitter に依存しているので API を提供するには OAuth Echo を利用する必要があります。しかも Meity の場合は OAuth Echo における Delegator になるので、Delegator の振る舞いを実装しなければなりません。

で、調べてみると Delegator の実装は意外と簡単。

  • Consumer から送られてくる以下のHTTPヘッダを確認する。
    • X-Auth-Service-Provider ヘッダに https://api.twitter.com/1/account/verify_credentials.json がセットされているか?
    • X-Verify-Credentials-Authorization ヘッダがセットされているか?
  • X-Verify-Credentials-Authorization ヘッダの内容を Authorization にセットして、X-Auth-Service-Provider ヘッダに指定されている https://api.twitter.com/1/account/verify_credentials.json をリクエスト(GET)する。
  • レスポンスコード 200 が返ってきたら認証OKなので処理続行。200以外だったらエラーを返す。

仕様の上では X-Auth-Service-Provider で指定される URL にリクエストを送るようですが、今回は Twitter の場合だけ考えているので https://api.twitter.com/1/account/verify_credentials.json が指定されているかをチェックします。

X-Verify-Credentials-Authorization の内容の正しさは Service Provider である Twitter が判断するものなので、値のチェックは特にしていません。(ヘッダから渡されるものなので改行文字は気にしなくていいはず。)

また、認証情報はヘッダ以外にPOSTデータにセットすることもできるみたいですが、その場合は POST されるデータを Authorization ヘッダにセットすることになるので、改行文字に注意。

という感じで Delegator は簡単に実装できます。

実際に作るときは正しく動作する Consumer 等を使って検証する必要があります。自分で作ってもいいですが、ネットを探せば Twitpic に投稿するサンプルプログラムとか色々あるので、それを書き換えて使うのが手っ取り早いです。

【参考にしたサイト】
» Using OAuth Echo | dev.twitter.com
» OAuth Echo - Identity Verification Delegation (Draft
» TwitPic Developers - API Documentation - API v2 » upload
» PHP + Twitpic API v2 で、ファイルをアップロード
» OAuthプロトコルの中身をざっくり解説してみるよ - ゆろよろ日記