3-legged OAuth フローによる Access Token の取得
別のユーザーに代わってアクションを実行するには、そのユーザーの access token を取得する必要があります。access token はリクエストが誰に代わって行われるかを指定するため、取得するにはまずユーザーからアクセス権を付与してもらう必要があります。これらのトークンは期限切れになりませんが、ユーザーはいつでも取り消すことができます。 X では、3-legged OAuth フローを介してユーザーの access token を取得できます。このフローでは、ユーザーを X にリダイレクトし、アプリケーションを認可してもらうことで、アプリケーションが access token と access token secret を取得できます。このフローは Log in with X の実装 で説明されているフローとほぼ同じですが、以下の 2 点が異なります:- GET oauth/authenticate の代わりに GET oauth/authorize エンドポイントが使用されます。
- ユーザーは、以前にアクセスが付与されていた場合でも、常に アプリケーションへのアクセスを認可するよう促されます。
プロセスの概要
高いレベルで見ると、3-Legged OAuth プロセスは以下のとおりです:- consumer アプリケーションが request token を取得するためのリクエストを作成します。
- ユーザーに認証させ、consumer アプリケーションに request token を送信します。
- request token を利用可能な user access token に変換します。
- 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
ウォークスルーの手順
ステップ 1: POST oauth/request_token consumer アプリケーションが request token を取得するためのリクエストを作成します。 このリクエストで唯一固有のパラメーターは oauth_callback です。これは、ステップ 2 が完了したときにユーザーをリダイレクトさせたい URL の URL エンコード 版でなければなりません。残りのパラメーターは OAuth 署名プロセスによって追加されます。 なお、POST oauth/request_token エンドポイントで使用するコールバック URL は、Developer Console のアプリ詳細ページ内の デベロッパーアプリ の設定で設定されている必要があります。 リクエストに含まれるもの: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
ユーザーに認証させ、consumer アプリケーションに request token を送信します。
ユーザーをリダイレクトする URL の例:
https://api.x.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
認証に成功すると、callback_url は oauth_token と oauth_verifier のパラメーターを含むリクエストを受け取ります。アプリケーションは、トークンがステップ 1 で受け取った request token と一致することを確認する必要があります。
クライアントのリダイレクトからのリクエスト:
https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
ステップ 3: POST oauth/access_token
request token を利用可能な access token に変換します。
request token を利用可能な access token にレンダリングするには、アプリケーションはステップ 2 で取得した oauth_verifier の値を含めて POST oauth/access_token エンドポイントにリクエストを行う必要があります。request token はヘッダーの oauth_token 部分でも渡されますが、これは署名プロセスで追加されているはずです。
リクエストに含まれるもの:
POST /oauth/access_token
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0
oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
成功したレスポンスには oauth_token、oauth_token_secret のパラメーターが含まれます。token と token secret は保存し、以降の X API への認証済みリクエストで使用します。ユーザーの身元を確認するには、GET account/verify_credentials を使用してください。
レスポンスに含まれるもの:
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo
OAuth 1.0a (application-user) が必要なリクエストでこれらの認証情報を使う
これでユーザーの access token を取得しました。これを使用して、POST statuses/update のような特定の API にアクセスし、ユーザーに代わって Tweet を作成できます。
リクエストに含まれるもの:
POST statuses/update.json
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4
サンプルユースケース
標準フローは Web ベースで、3-legged 認可 OAuth フローを使用します。ここに掲載しているスクリーンショットは、https://github.com/xdevplatform/twauth-web でソースを確認できるサンプルの一部です。 アプリケーションのある時点で、アプリケーションを認可するために X にリダイレクトする必要があります。

