Twitter APIで使うBearer Tokenの取得方法


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 KeyConsumer 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 TokenAuthorizationヘッダに含める形となります。

$ 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