LoginSignup
7
6

More than 5 years have passed since last update.

TwitterAPIのApplication-only authenticationを使う

Posted at

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'

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

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6