Skip to main content

OAuth 1.0a

X Developer Platform 上の多くのエンドポイントは、OAuth 1.0a メソッドを使用して、X アカウントを代表して操作したり、API リクエストを送信したりします。たとえば、X 開発者向けの App を持っている場合、そのユーザーがあなたの App で認証を行うかぎり、任意の X アカウントを代表して API リクエストを実行できます。 注意:HMAC-SHA1 やパーセントエンコーディングといった概念に慣れていない場合は、認証プロセスを大幅に簡略化できる API クライアントをいくつか紹介している、以下の「useful tools」セクションを参照することをおすすめします。

主要な概念

キーとトークンを使ったリクエストへの署名

各 API リクエストには、生成された複数のキーとトークンを authorization ヘッダーに含めて署名する必要があります。まずは、X 開発者用 App の詳細ページで、次のような複数のキーとトークンを生成できます。
API key と secret:

oauth_consumer_key

oauth_consumer_secret
これらは、API リクエストを行う際に、あなたの X 開発者用 App を表すユーザー名とパスワードのようなものです。
Access token と secret:

oauth_token

oauth_token_secret
Access token と access token secret は、OAuth 1.0a API リクエストを認証するために使用されるユーザー固有の認証情報です。これらは、リクエストがどの X アカウントに代わって行われているかを指定します。

開発者アカウントに関連付けられているのと同じ X アカウントに代わって App がリクエストを行うようにしたい場合は、[X 開発者用 App の]/resources/fundamentals/developer-apps) 詳細ページで、自分用の access token と token secret を生成できます。

別のユーザーの access token を生成したい場合は、以下の「Making requests on behalf of users」を参照してください。

ユーザーに代わってリクエストを送信する

シグネチャを作成する際には、ユーザーに代わってリクエストを送信する対象となるユーザーを表す一連のアクセス・トークンが必要です。 X 開発者 App を所有している X アカウントを表すアクセス・トークンのセットは、App の詳細ページから生成できます。ただし、別の X アカウントに代わってリクエストを送信したい場合は、そのアカウントの所有者が、3-legged OAuth flow の一環として自分のアカウントにサインインし、あなたにアクセス権を付与する必要があります。この処理の結果として、OAuth 1.0a リクエストを行うために使用できる一連のアクセス・トークン (oauth_tokenoauth_token_secret) が生成されます。 これらのキーとトークンを取得したら、シグネチャを作成してゼロから組み立てることもできます。ただし、仕組みを十分に理解している場合、または OAuth 1.0a を必要とするエンドポイントへのリクエスト送信に以下で紹介するツールのいずれかを使用している場合を除き、この方法は推奨しません。 参考として、生成されたすべてのトークンを Authorization ヘッダーに渡して署名した cURL リクエストの例を次に示します。
curl --request POST \
  --url 'https://api.x.com/1.1/statuses/update.json?status=Hello%20world' \
  --header 'authorization: OAuth oauth_consumer_key="CONSUMER_API_KEY", oauth_nonce="OAUTH_NONCE", oauth_signature="OAUTH_SIGNATURE", oauth_signature_method="HMAC-SHA1", oauth_timestamp="OAUTH_TIMESTAMP", oauth_token="ACCESS_TOKEN", oauth_version="1.0"' \
注意: ユーザーアクセス トークンは機密性が高いため、厳重に保護する必要があります。アクセス トークンが生成されると、そのトークンの対象となるユーザーは、あなたのアプリケーションがそれらを安全に保持してくれると信頼していることになります。APIキーとユーザーアクセス トークンの両方のセキュリティが侵害された場合、アプリケーションを通じて非公開情報やアカウント機能へのアクセスが外部にさらされるおそれがあります。キーとアクセス トークンの保護 について、ぜひ詳しく学んでください。

便利なツール

リクエストへの署名のプロセスは複雑です。認証トークンの大部分を自動生成してくれる API クライアントライブラリを使用することをおすすめします。
PostmanREST API リクエストを作成・送信できる API クライアントです。このツールの詳細については、チュートリアル「Postman を使い始める」をご覧ください。
InsomniaInsomnia は、Mac、Windows、Linux に対応し、Cookie 管理、環境変数、コード生成、認証機能を備えた REST API クライアントです。