F.Ko-Jiの「一秒後は未来」

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プロトコルの中身をざっくり解説してみるよ – ゆろよろ日記

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など