- どのアプリケーションがリクエストを送信しているのか
- リクエストがどのユーザーの代理でポストしているのか
- ユーザーが、そのユーザーの代理でポストする権限をそのアプリケーションに付与しているかどうか
- 送信中に第三者によってリクエストが改ざんされていないかどうか
Authorization ヘッダーを含めることを要求します。前述の HTTP リクエストにこのヘッダーを追加したバージョンは、次のようになります (通常、Authorization ヘッダーは 1 行である必要がありますが、ここでは可読性のために折り返しています) 。
Nonce
oauth_nonce パラメーターは、アプリケーションが各リクエストごとに生成する必要がある一意のトークンです。X はこの値を使用して、同じリクエストが複数回送信されていないかどうかを判定します。このリクエスト用の値は、32 バイトのランダムデータを base64 エンコードし、その後に英数字およびアンダースコア以外の文字をすべて取り除くことで生成されていますが、比較的ランダムな英数字文字列を生成できる方法であれば、どのような手法でも問題ありません。
Signature
oauth_signature パラメーターには、他のすべてのリクエストパラメーターと 2 つの秘密の値を署名アルゴリズムに通して生成される値が含まれます。署名は、X がリクエストが送信中に改ざんされていないこと、リクエストを送信しているアプリケーションが正当であること、そしてそのアプリケーションがユーザーのアカウントとやり取りする権限を持っていることを検証できるようにするためのものです。
このリクエストの oauth_signature を計算するプロセスは、署名の作成で説明しています。
Signature method
X が使用する
oauth_signature_method は HMAC-SHA1 です。この値は、X API に送信されるすべての認可済みリクエストで使用する必要があります。
Timestamp
oauth_timestamp パラメーターは、リクエストが作成された時刻を示します。この値は、リクエストが生成される時点における Unix エポックからの経過秒数である必要があり、ほとんどのプログラミング言語で容易に生成できます。X は、あまりにも過去に作成されたリクエストを拒否するため、リクエストを生成するコンピューターの時計を NTP で同期させておくことが重要です。
Token
oauth_token パラメーターは、通常、ユーザーが自分のアカウントへのアクセスをあなたのアプリケーションと共有することを許可していることを表します。この値が渡されない、または別の形式のトークンになる認証リクエストもいくつかありますが、それらについては アクセス トークンの取得 で詳細に説明しています。一般的な用途の多くのリクエストでは、アクセストークン と呼ばれるものを使用します。
自分のアカウント用の有効な アクセストークン は、開発者コンソール 上の X app の設定ページで生成できます。
Version
oauth_version パラメーターは、X API に送信されるすべてのリクエストで常に 1.0 にする必要があります。
ヘッダー文字列の構築
- 文字列 “OAuth ” (末尾のスペースを含む) を DST に追加します。
- 上で挙げた 7 つのパラメータの各キーと値のペアについて、次を行います:
- キーをパーセントエンコードし、その結果を DST に追加します。
- 等号文字 ‘=’ を DST に追加します。
- 二重引用符 ‘”’ を DST に追加します。
- 値をパーセントエンコードし、その結果を DST に追加します。
- 二重引用符 ‘”’ を DST に追加します。
- まだ残っているキーと値のペアがある場合は、カンマ ‘,’ とスペース ‘ ‘ を DST に追加します。