Twitter APIのBearer Tokenを作成してツイートを取得してみるまでの手順

公開日:2019/12/18 更新日:2019/12/18
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をを未取得の場合はそれぞれ以下を見てみてください。

www.virment.com

TwitterのAPIを使用するにはTwitter開発者アカウントを作成する必要がありますが、2018年7月にこの開発者アカウントとAPIの規約変更等が加えられ開発者アカウントの作成やAPIの使用が厳格化されました。この記事ではTwitterの開発者アカウントを作成する手順をまとめます。

www.virment.com

TwitterのAPIを使用するために必要なアクセストークンを取得するまでの手順をまとめます。

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」の値ではないので注意してください。

your-access-token-secret.png

ここでは、以降の説明のために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コマンドが便利です。例えば上記のcurljqに渡すと整形してレスポンスを表示してくれます。

$ 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とパラメータが変わるだけなので一度わかれば色々とできると思います。

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。