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通信の手順をイメージ図で示します。
手順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 | 電子署名 | 上記の引数を含む文字列から作成した電子署名の文字列を設定 |