手順2:暗号化キーを使って電子署名を作成する
電子署名を作成する際の元となる、平文のことを「ベース文字列」と呼びます。ベース文字列に対して、暗号化キーを使って計算した結果が、電子署名となります。
まず、下記の(1)、(2)、(3)を「&」文字で繋いで、ベース文字列を組み立てます。ただし、(2)、(3)については「&」文字で繋ぐ前に、URLエンコードを施す必要があります。
(1)HTTPメソッド。POST、またはGET
(2)アクセス先のURL
(3)oauth_signature以外の必要な全引数を、引数名のアルファベット順に並べ、 引数名1=値1&引数名2=値2&・・・&引数名n=値nのようにつないだ文字列
組み立てたベース文字列に対して、暗号化キーを使って電子署名を施します。暗号化キーは、秘密鍵を組み合わせて作ります。秘密鍵には、表2に掲げる3種類があります。
表2.秘密鍵の種類
秘密鍵の種類 | 取得するタイミング | 利用するフェーズ |
---|---|---|
コンシューマー・シークレット | アプリ登録時に取得 | 全てのフェーズ |
リクエスト・シークレット | リクエスト・トークン取得時に取得 | フェーズ2 |
アクセス・シークレット | アクセス・トークン取得時に取得 | フェーズ3 |
各フェーズで利用する暗号化キーは、上記の秘密鍵を表3のように組み合わせます。
.表3.各フェーズで利用する暗号化キー
利用するフェーズ | 利用する暗号化キー(秘密鍵の組み合わせ) |
---|---|
フェーズ1 | コンシューマー・シークレットと「&」文字を繋いだもの |
フェーズ2 | コンシューマー・シークレットとリクエスト・シークレットを「&」文字で繋いだもの |
フェーズ3 | コンシューマー・シークレットとアクセス・シークレットを「&」文字で繋いだもの |
電子署名で用いる方式はTwitterでは、HMAC-SHA1(SHA1という関数と暗号化キーを使う電子署名の作成方式)固定になります。作成した署名は、BASE64エンコード(バイナリデータ送信のため、英大小文字と数字の64文字に変換する手法)を施した上、URLエンコードを施します。この結果できた文字列を、oauth_signature
引数に設定します。
手順3:引数に電子署名を追加したものを送信する
ここではTwitter推奨の、HTTPのヘッダに設定した上で送信する方法を説明します。まず、oauth_signature引数を含めたすべての引数を使って、下記の文字列を作成します(引数名の順は任意)。
OAuth 引数名1="値1", 引数名2="値2", ・・・, 引数名n="値n"
この文字列を、「Authorization」という名前で、HTTPリクエストヘッダに設定します。その上で、あらかじめ決められたURLで、適切なメソッド(POST、またはGET)で送信します。