Posted at

TwitterAPIのApplication-only authenticationを使う

TwitterAPIが提供しているApplication-only authenticationという認証方式を使ってみたのでその記録を残す。


Application-only authenticationについて

TwitterAPIは、 Application-only authentication という特定のユーザの認証を必要としない認証方法を提供している。下記リンクにその詳しい説明がある。

https://developer.twitter.com/en/docs/basics/authentication/overview/application-only

ユーザの認証を必要としないので、例えば特定のクエリで検索したツイートを取得したいだけ、などのケースなどで役に立つ。

逆に言うと、ユーザのコンテキストを必要とするような情報にはアクセスできない。


使い方


base64エンコードしたBearer token credentialsを生成する

まず最初に、Twitterにアプリを登録すると発行される Consumer KeyConsumer Secret から、Bearer token credentialsというのを次のコマンドで生成する。

$ echo -n <CONSUMER_KEY>:<CONSUMER_SECRET> | openssl enc -e -base64 | tr -d "\n"

仮に、CONSUMER_KEYがaaa、CONSUMER_SECRETがbbbだとすると次のようになる。

$ echo -n aaa:bbb | openssl enc -e -base64 | tr -d "\n"

YWFhOmJiYg==


アクセストークンを取得する

次に、生成したBearer token credentialsをAuthorizationヘッダにのせてTwitterAPIへリクエストし、アクセストークンを取得する。

$ 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":"xxx.."}


TwitterAPIを使う

アクセストークンが取得できたら、あとはAuthorizationヘッダにのせてTwitterAPIを使うだけとなる。

例えば、Search APIを使うときは次のようにリクエストする。

$ curl -H 'Authorization: Bearer <ACCESS_TOKEN>' 

'https://api.twitter.com/1.1/search/tweets.json?q=hello'

以上、使ってみた記録でした。