Twitter APIのBearer Tokenを作成してツイートを取得してみるまでの手順
Photo by Sara Kurfeß on Unsplash
はじめに
TwitterのAPIを使用したアプリを作成する場合、そのアプリは当然ながらTwitter APIの認証を通る必要があります。Twitter APIでは、アプリ用の認証方法として、「Bearer Token」が用意されています。この記事では、「Bearer Token」を取得してTwitter APIを使って適当なツイートを取得してみるまでの手順をまとめます。
前提と環境
以下が前提となります。
- Twitterの開発者アカウントは作成済
- Twitter APIのConsumer API key、Cosumer API secret keyを取得済
もしまだTwitterの開発者アカウントを未作成であったり、Twitter APIのConsumer API key、Cosumer API secret keyをを未取得の場合はそれぞれ以下を見てみてください。
TwitterのAPIを使用するにはTwitter開発者アカウントを作成する必要がありますが、2018年7月にこの開発者アカウントとAPIの規約変更等が加えられ開発者アカウントの作成やAPIの使用が厳格化されました。この記事ではTwitterの開発者アカウントを作成する手順をまとめます。
Bearer Tokenを取得する
Bearer TokenはTwitter APIの独自のものではなく、一般的に使用されている認証方法です。Twitter APIで使用するBearer Tokenの取得には、Twitter APIのConsumer API keyとCosumer API secret keyの2つを使用します。これら2つの値は、Twitterアプリの作成時に以下のように表示された値です。「Access token & access token secret」の値ではないので注意してください。
ここでは、以降の説明のためにConsumer API keyとCosumer API secret keyをそれぞれ以下の値として説明していきます。
Consumer API key | aaaa |
---|---|
Cosumer API secret key | bbbb |
なお、Bearer Tokenの取得手順は、Application-only authentication - 公式ドキュメントにも記載されています。公式ドキュメントに従った内容になります。
まず、端末で以下のようにConsumer API keyとCosumer API secret keyの2つを「:」で連結した文字列をBase64でエンコードします。
$ echo -n aaaa:bbbb | base64
上記を実行すると以下のようにエンコードした文字列が表示されます。echo
コマンドのn
オプションは最後の改行を出力しないためだけのものです。
$ echo -n aaaa:bbbb | base64
OWFhOTpiOmAi
ここで得られたOWFhOTpiOmAi
を使ってTwitter APIのBearer Token取得用のURLにPOSTリクエストを送信します。具体的には以下のコマンドを実行します。OWFhOTpiOmAi
は各自のBase64のエンコード結果と置き換えてください。
$ curl https://api.twitter.com/oauth2/token \
-H 'Authorization: Basic OWFhOTpiOmAi' \
-H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8' \
-X POST \
-d grant_type=client_credentials
{"token_type":"bearer","access_token":"AAAAAAAkKKKKKKKKKKKKISHLLUEaenuoeAOubfeouBAiulbeoquBAOUbfwouAOUneo"}
上記のように、POSTリクエストのレスポンスとしてBearer Tokenが返ってきます。上記のAAAAAAAkKKKKKKKKKKKKISHLLUEaenuoeAOubfeouBAiulbeoquBAOUbfwouAOUneo
がBearer Tokenです。これでBearer Tokenの取得が完了です。
なお、上記のcurl
によるPOSTリクエストは、公式ドキュメントにて指定されているように、以下の内容をcurl
用に書き下しただけになります。
POST /oauth2/token HTTP/1.1
Host: api.twitter.com
User-Agent: My Twitter App v1.0.23
Authorization: Basic eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJn
NmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw==
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 29
Accept-Encoding: gzip
grant_type=client_credentials
作成したBearer Tokenを使って実際にツイートを取得する手順を次に説明します。
タイムラインを取得する
特定のTwitterアカウントのタイムラインを取得するにはhttps://api.twitter.com/1.1/statuses/user_timeline.json
にTwitterユーザ名やユーザIDを指定してリクエストを投げます。curl
を使用する場合は以下のようになります。
$ curl 'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=virtualiment&count=1' \
-H 'Authorization: Bearer AAAAAAAkKKKKKKKKKKKKISHLLUEaenuoeAOubfeouBAiulbeoquBAOUbfwouAOUneo'
上記のscreen_name
にTwitterユーザ名を渡して指定しています。count
は取得するツイートの件数です。これらにも色々なパラメータを指定することができます。Authorization: Bearer
に続く値は作成したBearer Tokenです。他のパラメータについてはこちらの公式ドキュメントを見てみてください。
上記を実行すると以下のような結果が返ってきます。以下は整形してあります。
[
{
"created_at": "Mon Dec 16 07:54:39 +0000 2019",
"id": 3294712386182638162,
"id_str": "3294712386182638162,
"text": "自分用のWebhookエンドポイントを作成できローカル内のサーバにもWebhookを転送できる「Webhook Relay」についてまとめました。Webhook Relayはできることが多く、業務自動化やスマートホーム化などで色々… https://t.co/MhcnfHr2hA",
"truncated": true,
"entities": {
"hashtags": [],
"symbols": [],
"user_mentions": [],
"urls": [
{
// 以降省略
なお、返ってくるレスポンスを綺麗に整形してほしい場合はjq
コマンドが便利です。例えば上記のcurl
をjq
に渡すと整形してレスポンスを表示してくれます。
$ curl 'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=virtualiment&count=1' \
-H 'Authorization: Bearer AAAAAAAkKKKKKKKKKKKKISHLLUEaenuoeAOubfeouBAiulbeoquBAOUbfwouAOUneo' | jq
jq
コマンドがインストールされていない場合は、各自のOSに合わせてパッケージマネージャなどでインストールして使ってください。Ubuntuならばapt
、macOSならばbrew
でインストールできます。
キーワードで検索する
キーワードを指定してそのキーワードに関するツイートを取得したい場合は、https://api.twitter.com/1.1/search/tweets.json
にパラメータとしてキーワードを指定してリクエストを投げます。curl
を使用する場合は以下のようになります。
$ curl 'https://api.twitter.com/1.1/search/tweets.json?q=twitter&count=1' \
-H 'Authorization: Bearer AAAAAAAkKKKKKKKKKKKKISHLLUEaenuoeAOubfeouBAiulbeoquBAOUbfwouAOUneo'
上記のq=twitter
でキーワードとして「twitter」を指定しています。その他に指定できるパラメータはこちらの公式ドキュメントを見てみてください。
まとめ
Twitter APIのBearer Tokenを作成して実際にツイートを取得してみるまでの手順をまとめました。この記事ではcurl
を使用しましたが、もちろん他の言語でも使用できます。基本的には目的に応じてHTTPリクエストを投げるURLとパラメータが変わるだけなので一度わかれば色々とできると思います。
関連記事
- 公開日:2019/12/17 更新日:2019/12/17
Twitter APIのアクセストークンを取得するまでの手順
TwitterのAPIを使用するために必要なアクセストークンを取得するまでの手順をまとめます。
- 公開日:2019/12/17 更新日:2019/12/17
Twitter開発者アカウントを作成する手順
TwitterのAPIを使用するにはTwitter開発者アカウントを作成する必要がありますが、2018年7月にこの開発者アカウントとAPIの規約変更等が加えられ開発者アカウントの作成やAPIの使用が厳格化されました。この記事ではTwitterの開発者アカウントを作成する手順をまとめます。