リクエストの認可
このドキュメントの目的は、X API に認可済みリクエストを送信するために、HTTP リクエストをどのように変更するかを示すことです。 X の API はすべて HTTP プロトコルに基づいています。つまり、X の API を使用するために書くソフトウェアは、X のサーバーに一連の構造化されたメッセージを送信します。例えば、「Hello Ladies + Gentlemen, a signed OAuth request!」というテキストを Tweet として投稿するリクエストは次のようになります:- どのアプリケーションがリクエストを行っているのか
- リクエストがどのユーザーに代わって投稿しているのか
- ユーザーがそのアプリケーションに自身に代わって投稿する認可を与えたかどうか
- リクエストが送信中に第三者によって改ざんされていないかどうか
Nonce
oauth_nonce パラメーターは、ユニークなリクエストごとにアプリケーションが生成すべき一意のトークンです。X はこの値を使って、リクエストが複数回送信されたかどうかを判定します。このリクエストの値は 32 バイトのランダムデータを base64 エンコードし、非単語文字を取り除いて生成されていますが、比較的ランダムな英数字の文字列を生成する方法であればなんでも問題ありません。
Signature
oauth_signature パラメーターには、他のすべてのリクエストパラメーターと 2 つの secret 値を署名アルゴリズムに通して生成された値が含まれます。この署名の目的は、リクエストが送信中に変更されていないこと、リクエストを送信しているアプリケーションを検証し、そのアプリケーションがユーザーのアカウントとやり取りする認可を持っていることを X が検証できるようにすることです。
このリクエストの oauth_signature を計算するプロセスは、署名の作成 で説明されています。
Signature method
X で使用される oauth_signature_method は HMAC-SHA1 です。X の API に送信される認可済みのリクエストには、この値を使用する必要があります。
Timestamp
oauth_timestamp パラメーターは、リクエストが作成されたタイミングを示します。この値はリクエストが生成される時点の Unix エポックからの秒数であり、ほとんどのプログラミング言語で簡単に生成できます。X は過去に作成されたリクエストを拒否するため、リクエストを生成するコンピューターの時刻を NTP で同期させておくことが重要です。
Token
oauth_token パラメーターは通常、ユーザーがそのアカウントへのアクセスをあなたのアプリケーションと共有することを許可したことを表します。この値が渡されない、または異なる形式のトークンとなる認証リクエストがいくつかありますが、詳細は Access Token の取得 で説明されています。ほとんどの汎用的なリクエストでは、いわゆる access token を使用します。
有効な access token は、Developer Console 上のあなたの X アプリ の設定ページで自分のアカウント用に生成できます。
Version
oauth_version パラメーターは、X API に送信されるすべてのリクエストで常に 1.0 である必要があります。
ヘッダー文字列の作成
ヘッダー文字列を作成するには、DST という文字列に書き込むと想像してください。- DST に文字列「OAuth 」(末尾のスペースを含む) を追加します。
- 上記の 7 つのパラメーターの各キー/値のペアについて:
- キーを パーセントエンコード して DST に追加します。
- 等号「=」を DST に追加します。
- ダブルクォート「“」を DST に追加します。
- 値を パーセントエンコード して DST に追加します。
- ダブルクォート「“」を DST に追加します。
- 残りのキー/値のペアがある場合は、カンマ「,」とスペース「 」を DST に追加します。