署名の作成
このページでは、HTTP リクエスト用の OAuth 1.0a HMAC-SHA1 署名を生成する方法について説明します。この署名は、リクエストの認可 で説明されているように、認可済みリクエストの一部として X API に渡すのに適しています。 署名を示すために使用するリクエストは、https://api.x.com/1.1/statuses/update.json への POST リクエストです。生のリクエストは次のようになります:
ベース URL は、クエリ文字列やハッシュパラメーターを除いた、リクエストが送られる URL です。ここで正しいプロトコルを使用することが重要なので、URL の「https://」部分が API に送信される実際のリクエストと一致していることを確認してください。
パラメーターの収集
次に、リクエストに含まれるすべてのパラメーターを集めます。これらの追加パラメーターがある場所は 2 つあります — URL (クエリ文字列の一部として) とリクエスト本文です。サンプルリクエストには、両方の場所に単一のパラメーターが含まれています:
これらの値は、後で使用する 1 つの文字列にエンコードする必要があります。文字列を構築するプロセスは非常に厳密です:
- 署名対象となるすべてのキーと値を パーセントエンコード します。
- パラメーターのリストを、エンコードされたキー [2] を基準にアルファベット順 [1] に並べ替えます。
- 各キー/値のペアについて:
- エンコードされたキーを出力文字列に追加します。
- 「=」文字を出力文字列に追加します。
- エンコードされた値を出力文字列に追加します。
- さらに残っているキー/値のペアがある場合は、「&」文字を出力文字列に追加します。
署名ベース文字列の作成
ここまでに収集した 3 つの値を 1 つの文字列に結合して、そこから署名を生成します。これは OAuth 仕様で 署名ベース文字列 と呼ばれます。 HTTP メソッド、ベース URL、パラメーター文字列を 1 つの文字列にエンコードするには:- HTTP メソッドを大文字に変換し、出力文字列をその値に設定します。
- 出力文字列に「&」文字を追加します。
- URL を パーセントエンコード して、出力文字列に追加します。
- 出力文字列に「&」文字を追加します。
- パラメーター文字列を パーセントエンコード して、出力文字列に追加します。
署名キーの取得
最後に収集するデータは、リクエストを行っている X アプリ と、リクエストが代わりに行われているユーザーを識別する secret です。これらの値は非常に機密性が高く、決して誰とも共有すべきではないことに注意してください。 X に対してアプリを識別する値は consumer secret と呼ばれ、アプリの詳細ページ を表示することで Developer Console で確認できます。これは X アプリが送信するすべてのリクエストで同じになります。
アプリケーションが代わりに動作しているアカウントを識別する値は OAuth token secret と呼ばれます。この値は、Access Token の取得 で説明されているいくつかの方法で取得できます。
繰り返しになりますが、これらの値はアプリケーションに閉じておくことが非常に重要です。これらの値が漏洩したと感じる場合は、トークンを再生成してください (このページのトークンは、実際のリクエストに対して無効なものとしてマークされています)。
これらの値を組み合わせて、署名の生成に使用される 署名キー を作成する必要があります。署名キーは単に パーセントエンコード された token secret です:
なお、request token を取得する場合など、まだ token secret が判明していないフローもあります。その場合、署名キーは パーセントエンコード された consumer secret の後にアンパサンド文字「&」を続けたものになります。