処理の流れ
「OAuth 1.0 a」を採用しているが、一部で「OAuth2.0」の仕組みも導入している
・Application-only authentication
2016年現在の最新標準は、2012年にRFCとして発行された「OAuth 2.0(RFC6749、RFC6750)」
・しかし、「Twitter API v1.1」の「Authentication Model」は、旧バージョンの「OAuth Core 1.0 Revision A」がメイン
・「OAuth1.0」「OAuth2.0」の互換性はない
・Twitter Developer Documentation
・Application-only authentication
OAuth
2016年現在の最新標準は、2012年にRFCとして発行された「OAuth 2.0(RFC6749、RFC6750)」
・しかし、「Twitter API v1.1」の「Authentication Model」は、旧バージョンの「OAuth Core 1.0 Revision A」がメイン
・「OAuth1.0」「OAuth2.0」の互換性はない
・Twitter Developer Documentation
基本的な処理の流れ
1.「Twitter Developers」でApp作成
自動発行
・Consumer Key (API Key)
・Consumer Secret (API Secret)
2.「アクセストークン」取得
「アクセストークン」とは?
・Access Token
・Access Token Secret
「アクセストークン」取得するためには?
・2-1.「リクエストトークン」取得
・2-2.取得した「リクエストトークン」を使用して、ユーザーを「Twitterサーバー上にある認証画面」へ誘導。ユーザが「連携アプリを認証」ボタンクリック
・2-3.アクセストークン取得
「アクセストークン」取得すると?
・「Twitter API」で各種リクエスト受付可能になる
「アクセストークン」取得するまでの流れ
2-1.「リクエストトークン」取得
POST送信
https://api.twitter.com/oauth/request_token
結果例
・戻り値
oauth_token=Z6eEdO8MOmk394WozF5oKyuAv855l4Mlqo7hhlSLik&oauth_token_secret=Kd75W4OQfb2oJTV0vzGzeXftVAwgMnEK9MumzYcM&oauth_callback_confirmed=true
・POST oauth/request_token
2-2.取得した「リクエストトークン」を使用して、ユーザーを「Twitterサーバー上にある認証画面」へ誘導
GET送信
https://api.twitter.com/oauth/authenticate?oauth_token=Z6eEdO8MOmk394WozF5oKyuAv855l4Mlqo7hhlSLik
ユーザが「連携アプリを認証」ボタンクリック
・結果例
https://api.twitter.com/oauth/authorize
Callback URL?oauth_token=Z6eEdO8MOmk394WozF5oKyuAv855l4Mlqo7hhlSLik&oauth_verifier=Toe2Fl6p0LlqfvpWNwisLTUDRZEUlOCT
・GET oauth/authenticate
2-3.アクセストークン取得
POST送信
https://api.twitter.com/oauth/access_token
結果例
・成功したリクエストに対する戻り値
oauth_token=6253282-eWudHldSbIaelX7swmsiHImEL4KinwaGloHANdrY&oauth_token_secret=2EEfA6BG3ly3sR3RjE0IBSnlQu4ZrUzPiYKmrkVU&user_id=6253282&screen_name=twitterapi
戻り値比較一覧表
2-1.リクエストトークン | 2-2.認証画面 | 2-3.アクセストークン | |
---|---|---|---|
oauth_token | Z6eEdO8MOmk394WozF5oKyuAv855l4Mlqo7hhlSLik | Z6eEdO8MOmk394WozF5oKyuAv855l4Mlqo7hhlSLik | 6253282-eWudHldSbIaelX7swmsiHImEL4KinwaGloHANdrY |
上記使用用途 | 認証画面へ誘導する際、URLの一部として使用 | アクセストークンを取得する際、パラメータとして使用 | 「Twitter API」へ各種リクエストする際、パラメータとして使用 |
oauth_token_secret | Kd75W4OQfb2oJTV0vzGzeXftVAwgMnEK9MumzYcM | - | 2EEfA6BG3ly3sR3RjE0IBSnlQu4ZrUzPiYKmrkVU |
上記使用用途 | アクセストークンを取得する際、署名キーを作成するため使用 | - | 「Twitter API」へ各種リクエストする際、署名キーを作成するため使用 |
oauth_callback_confirmed | true | - | - |
上記使用用途 | 未使用 | - | - |
oauth_verifier | - | Toe2Fl6p0LlqfvpWNwisLTUDRZEUlOCT | - |
上記使用用途 | - | アクセストークンを取得する際、パラメータとして使用 | - |
分かりづらい点
同じキー名でも、使用場面毎に異なる値が返ってくる(ことがある)
同じ値が返ってくる場合もある
・紛らわしいし、分かりづらい
oauth_token
リクエストトークン
・「https://api.twitter.com/oauth/request_token」からの戻り値
・リクエストトークンを意味する
・認証画面へ誘導する際、URLの一部として使用
認証画面
・「https://api.twitter.com/oauth/authenticate」アクセス後のURLパラメータ
・リクエストトークンを意味する
・上記と同じ取得結果
・アクセストークンを取得する際、パラメータとして使用
アクセストークン
・「https://api.twitter.com/oauth/access_token」からの戻り値
・アクセストークンを意味する
・「Twitter API」へ各種リクエストする際、署名キーを作成するため使用