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 Key と Consumer 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'
以上、使ってみた記録でした。