OAuthによるHTTP通信の手順

改めてまとめると、OAuthによるHTTP通信を用いるフェーズには、以下の3つがあ ります。

フェーズ1:リクエスト・トークンの要求
フェーズ2:アクセス・トークンの要求
フェーズ3:Webサービスへのアクセス

いずれのフェーズにおいても、以下の手順を踏む必要があります。

手順1.OAuth特有の引数を準備する
手順2.暗号化キーを使って電子署名を作成する
手順3.電子署名も含め、全ての引数を送信する

なお、手順3の引数の送信方法は以下の3つがあります。

(1)HTTPのヘッダに設定した上で送信する
(2)POST送信のデータとして送信する
(3)GET送信のクエリー文字列として送信する

Twitterでは(1)の方法を推奨していますので、以降はこの方法で説明します。各フェーズにおける、OAuthによるHTTP通信の手順をイメージ図で示します。

図7.リクエスト・トークンの要求

図8.アクセス・トークンの要求

図9.Webサービスへのアクセス

手順1:OAuth特有の引数を準備する

OAuthの引数には表1のようなものがあります。P1~3列の○/-は、それぞれフェーズ1~3での指定の要否を表します。

表1.OAuthの引数の種類と設定

P1 P2 P3 引数名 内容 設定値
oauth_consumer_key コンシューマー・キー アプリ登録時の文字列を設定
oauth_signature_method 電子署名の方式 Twitterの場合、HMAC-SHA1固定
oauth_timestamp 1970年1月1日から現在までの秒数 HTTP通信を行うごとに増加する値を設定する必要あり
oauth_nonce ランダムな文字列 HTTP通信を行うごとに異なる必要あり
oauth_token トークン文字列 (P2)ではリクエスト・トークン、(P3)ではアクセス・トークンを設定
oauth_verifier ユーザーが認証したことの確認 (P2)で、ブラウザに表示されたPINコードを設定
oauth_signature 電子署名 上記の引数を含む文字列から作成した電子署名の文字列を設定