Help us understand the problem. What is going on with this article?

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

Twitter APIを使うのにOAuth 2.0仕様の認証方式を試してみた。その際に必要となるBearer Tokenの取得方法が若干面倒だったので書き残しておきます。

auth-5.png.img.fullhd.medium.png

認証まわりの詳しい仕様は公式ドキュメントを読んでください。
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

unsoluble_sugar
フルオタクエンジニア
https://unsolublesugar.com
techhunterorg
Always absorb new technology
https://techhunter.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away