3-legged OAuth フローを使用してアクセストークンを取得する
- GET oauth/authenticate の代わりに GET oauth/authorize エンドポイントを使用します。
- 以前にアクセスが付与されていた場合でも、ユーザーにはアプリケーションへのアクセスを承認するように 必ず プロンプトが表示されます。
プロセスの概要
- コンシューマーアプリケーションがリクエストトークンを取得するためのリクエストを作成する。
- ユーザーが認証を行い、コンシューマーアプリケーションにリクエストトークンを送信する。
- リクエストトークンを、実際に利用できるユーザーアクセストークンに変換する。
- App Key === API Key === Consumer API Key === Consumer Key === Customer Key ===
oauth_consumer_key - App Key Secret === API Secret Key === Consumer Secret === Consumer Key === Customer Key ===
oauth_consumer_secret - Callback URL ===
oauth_callback
- Request Token ===
oauth_token - Request Token Secret ===
oauth_token_secret - oauth_verifier
- Access token === Token === 生成される
oauth_token - Access token secret === Token Secret === 生成される
oauth_token_secret
手順のウォークスルー
oauth_callback のみであり、これはステップ 2 を完了した際にユーザーをリダイレクトしたい URL を URL エンコード した値である必要があります。残りのパラメータは OAuth 署名プロセスによって追加されます。
注意: POST oauth/request_token エンドポイントで使用するコールバック URL はすべて、開発者コンソールの App 詳細ページにある developer App の設定内であらかじめ構成しておく必要があります。
リクエストに含まれるもの:
oauth_callback="https%3A%2F%2FyourCallbackUrl.com"
oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w"
アプリはレスポンスの HTTP ステータスを確認する必要があります。200 以外の値は失敗を示します。レスポンスボディには oauth_token、oauth_token_secret、oauth_callback_confirmed パラメータが含まれます。アプリは oauth_callback_confirmed が true であることを検証し、残り 2 つの値を次の手順のために保存しておく必要があります。
レスポンスに含まれるもの
oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
oauth_token_secret=veNRnAWe6inFuo8o2u8SLLZLjolYDmDP7SzL0YfYI
oauth_callback_confirmed=true
ステップ 2: GET oauth/authorize
ユーザーに認証を行わせ、コンシューマーアプリケーションにリクエストトークンを送信させます。
ユーザーをリダイレクトするための URL の例:
https://api.x.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
認証が成功すると、callback_url は oauth_token と oauth_verifier パラメータを含むリクエストを受信します。アプリケーションは、このトークンがステップ 1 で受け取ったリクエストトークンと一致することを検証する必要があります。
クライアントのリダイレクトからのリクエスト:
https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
ステップ 3: POST oauth/access_token
リクエストトークンを使用可能なアクセストークンに変換します。
リクエストトークンを使用可能なアクセストークンに変換するには、アプリケーションはステップ 2 で取得した oauth_verifier の値を含む POST oauth/access_token エンドポイントへのリクエストを送信する必要があります。リクエストトークンはヘッダーの oauth_token の一部としても渡されますが、これは署名プロセスによって追加されます。
リクエストに含まれるもの:
POST /oauth/access_token
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
成功したレスポンスには oauth_token、oauth_token_secret パラメータが含まれます。トークンおよびトークンシークレットは保存しておき、今後 X API への認証済みリクエストで使用する必要があります。ユーザーの識別情報を判別するには、GET account/verify_credentials を使用します。
レスポンスに含まれるもの:
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo
これらのクレデンシャルを、OAuth 1.0a (アプリケーション+ユーザーコンテキスト) が必要なリクエストで使用する
これでユーザーアクセストークンが取得できたので、これを使用して、ユーザーに代わってツイートを作成するための POST statuses/update など、特定のAPIにアクセスできます。
リクエスト内容:
POST statuses/update.json
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
サンプルユースケース


