手順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)で送信します。