3レッグ認証OAuthフローを使用したユーザーアクセストークンの取得

別のユーザーに代わってアクションを実行するには、そのユーザーのアクセストークンを取得する必要があります。アクセストークンは、リクエストを代行するTwitterアカウントを指定します。このため、アクセストークンを取得するには最初にアクセス権を付与する必要があります。 こうしたトークンには有効期限はありませんが、ユーザーによりいつでも取り消すことができます。

Twitterでは、3レッグ認証OAuthフローを介してユーザーのアクセストークンを取得できます。これにより、アプリケーションは、ユーザーをTwitterにリダイレクトして、アプリケーションを認証させることで、アクセストークンとアクセストークンシークレットを取得できます。このフローは、次の2つの例外を除いて、「Twitterでログインを実装」で説明したフローとほぼ同じです。

  • GET oauth/authenticateの代わりに、GET oauth/authorizeエンドポイントが使用されます。
  • すでにアクセスが許可されている場合でも、ユーザーはアプリケーションへのアクセスを認証するように常に求められます。
     

始める前に、アプリケーションの権限をチェックし、コンシューマーキーとコールバックURLを確認しておく必要があります。コールバックURLまたはパブリックアクセス可能なUIがない場合は、PINベースの認証の使用を検討してください。これは、認証後にユーザーをリダイレクトするために、ウェブブラウザーにアクセスできない、またはウェブブラウザーを埋め込むことができないアプリケーションを対象としています。 

3レッグ認証サインインのインタラクションで可能性があるステータスが、以下のフローチャートに図示されています。

プロセスの概要

大まかに言うと、3レッグ認証OAuthプロセスは次のように実行されます。

  1. コンシューマーアプリケーションがリクエストトークンを取得するためのリクエストを作成します。
  2. ユーザーに認証してもらい、コンシューマーアプリケーションにリクエストトークンを送信します。
  3. リクエストトークンを使用可能なユーザーアクセストークンに変換します。

 

用語の説明

以下のガイドで、同じものを呼ぶさまざまな用語を確認できます。

クライアントの認証情報:

  • 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 === resulting oauth_token
  • Access token secret === Token Secret === resulting oauth_token_secret

 

詳細な手順

手順1: POST oauth/request_token

コンシューマーアプリケーションがリクエストトークンを取得するためのリクエストを作成します。

このリクエストでの唯一の固有のパラメーターはoauth_callbackです。これは、手順2を完了した際にユーザーがリダイレクトされるURLのURLエンコードされたバージョンである必要があります。残りのパラメーターは、OAuth署名プロセスにより追加されます。

注: POST oauth/request_tokenエンドポイントで使用するコールバックURLは、開発者ポータルのアプリの詳細ページにある開発者アプリの設定内で構成する必要があります。
 

リクエストに含まれるもの:

oauth_callback="https%3A%2F%2FyourCallbackUrl.com"

oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w" 

アプリが応答のHTTPステータスを確認する必要があります。200以外のすべての値は失敗を示します。応答の本文には、oauth_tokenoauth_token_secretoauth_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.twitter.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0

認証に成功すると、callback_urloauth_tokenoauth_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_tokenoauth_token_secretのパラメーターが含まれています。トークンとトークンシークレットは、今後認証されるTwitter APIへのリクエストに使用するために保存してください。ユーザーのIDを判断するには、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

 

サンプルユースケース

標準フローはウェブベースで、3レッグ認証OAuthフローを使用します。次に示すスクリーンショットはサンプルの一部で、そのソースはhttps://github.com/twitterdev/twauth-webで確認できます。

アプリケーションのどこかの時点で、Twitterにリダイレクトしてアプリケーションを認証する必要があります。image0リクエストトークンを使用してTwitterにリダイレクトすると、ユーザーにアプリケーションの認証を促すメッセージが表示されます。image1アプリケーションを認証すると、リクエストトークンを生成したときに提供したコールバックURLにユーザーがリダイレクトされます。これを使用して、このユーザーで永久的なアクセストークンを取得し、ローカルで保存します。image2

Was this document helpful?

ありがとうございます

ご協力ありがとうございました。お役に立てて幸いです。

Thank you for the feedback. How could we improve this document?

Thank you for the feedback. Your comments will help us improve our documents in the future.