ryoma's note

マイペース ੯•́ʔ̋ ͙͛*͛ ͙͛*͛ ͙͛̋و

Twitter API v2 で private metrics にアクセスする

Twitter API のドキュメントによると、所有または承認されたアカウントに対して、以下の非公開情報を取得できるとあったので試してみる。

  • 各ツイートのインプレッション数、URL リンクのクリック数、プロフィールリンクのクリック数、動画視聴の四分位データ(0%、25%、50%、75%、100%)
    • 過去30日以内に作成されたツイートのみ

デベロッパーアカウントとプロジェクトは事前に作成しておく。

アクセストークンは、PKCE を利用した OAuth 2.0 の認可コードフローで取得する。今回は試すだけなので、認可エンドポイントに渡すcode_challenge_method には plain を指定する。スコープにはoffline.access を指定してリフレッシュトークンも取得する。

https://twitter.com/i/oauth2/authorize?response_type=code&client_id=<CLIENT_ID>&redirect_uri=<REDIRECT_URI>&scope=tweet.read%20users.read%20offline.access&state=state&code_challenge=challenge&code_challenge_method=plain

アプリを許可すると認証コードが発行されるので、30秒以内にアクセストークンと交換する。

$ curl --location --request POST 'https://api.twitter.com/2/oauth2/token' \
--basic -u '<CLIENT_ID>:<CLIENT_SECRET>' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'code=<CODE>' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'redirect_uri=<REDIRECT_URI>' \
--data-urlencode 'code_verifier=challenge'

発行されたアクセストークンを利用して、単一のツイート情報を取得するエンドポイントにリクエストすると、前述の非公開情報を取得することができた。

$ curl "https://api.twitter.com/2/tweets/<ID>?tweet.fields=non_public_metrics,organic_metrics&expansions=attachments.media_keys&media.fields=non_public_metrics,organic_metrics" -H "Authorization: Bearer $ACCESS_TOKEN"

参考