Twitter APIを使うのにOAuth 2.0仕様の認証方式を試してみた。その際に必要となるBearer Token
の取得方法が若干面倒だったので書き残しておきます。
認証まわりの詳しい仕様は公式ドキュメントを読んでください。
Application-only authentication — Twitter Developers
以下、Twitter Developersにアプリ登録済みで、開発環境はMac前提での解説です。
Bearer Token credentialsを生成する
Twitter Developersの[Apps] -> 対象アプリの [Details] -> [Keys and tokens] にアクセスし、Consumer Key(API key)
と Consumer Secret(API secret key)
を取得します。
取得したConsumer Key
とConsumer Secret
を:
(コロン)で連結し、Base64エンコードをかけます。
$ echo -n <CONSUMER_KEY>:<CONSUMER_SECRET> | openssl enc -e -base64 | tr -d "\n"
前述のコマンドを叩くと、以下のようなBearer Token credentials
が生成されます。
eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
Bearer Tokenを取得する
先ほど生成したBearer Token credentials
を使って、Bearer Token
を取得します。
TwitterのPOST oauth2/tokenにリクエストを投げます。
$ curl -X POST \
-H "Authorization: Basic <BEARER_TOKEN_CREDENTIALS>" \
-H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" \
-d "grant_type=client_credentials" \
"https://api.twitter.com/oauth2/token"
リクエストが成功すると、以下のようなレスポンスが返ってきます。
{"token_type":"bearer","access_token":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAAAAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}
access_token
キーの値がBearer Token
です。
Twitter APIでBearer Tokenを使う
実際にTwitter APIで使う際は、取得したBearer Token
をAuthorization
ヘッダに含める形となります。
$ curl -H "Authorization: Bearer <BEARER_TOKEN>" \
"https://api.twitter.com/1.1/statuses/show.json?id=1218693176170434560" | jq
基本的な流れは公式ドキュメントの手順通りですが、具体的なコマンドの記載がなかったため地味に苦戦しました。
Application-only authentication — Twitter Developers
ちなみにcurlでサクッとAPIのJSONレスポンス見る際は、jqコマンドが大変便利です。未導入の方はぜひインストールしてみてください。
jqコマンドでcurlのJSONレスポンスを見やすくする - Qiita