Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@mogulla3

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'

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
5
Help us understand the problem. What are the problem?