TwitterのOAuth EchoにおけるDelegatorの作り方
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プロトコルの中身をざっくり解説してみるよ – ゆろよろ日記
コメントを残す