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"