Twitter Account Activity API の登録
AccountActivityAPIとは
- Stream APIの後継。
- Stream APIの場合はActivityがあるか定期的な問い合わせが必要だったが、ActivityAPIはなにかしらのアクションがあった場合に知らせてくる 詳しくはここ
AccountActivityAPIの登録まで
- Twitterの開発者アカウント登録
- 環境設定
- 実装
- Webhook登録
1. Twitterの開発者アカウント登録
ぐぐると山のように出てくるので割愛。申請後にTwitterから申請時と同じ様な内容をメールで送る必要がある。
そのメールに返信すると審査が通る。大体3~4日くらいで通った。
2. 環境設定
開発者アカウントにログイン後、左メニューの「Dev Enviroments」を選択し、Account Activity API / Snadbox 項目の「Set up enviroment」をクリックする。
適当に設定して終了。今回のラベル名はdevにした。
3. 実装
諸々の設定が終わったらTwitterのwebhookイベントを受信するWebアプリを実装する。 詳しくはここらへん
- CRC APIを実装
TwitterのCRC(Challenge Response Check)GETリクエストを受信し、適切にフォーマットされたJSONレスポンスで応答するコードを書く。
詳しくはここらへん
だいたいこんな感じ(goで書いている)
endpoint: /api/webhook/twitter/crc
func (h *TwitterHandler) Crc(params twitter.GetWebhookTwitterCrcParams) middleware.Responder { mac := hmac.New(sha256.New, []byte("CONSUMER_KEY")) mac.Write([]byte(params.CrcToken)) res := &entity.Crc{ ResponseToken: "sha256=" + base64.StdEncoding.EncodeToString(mac.Sum(nil)), } return twitter.NewGetWebhookTwitterCrcOK().WithPayload(res) }
4. Webhook登録
Bearer Token を設定してPOSTする。Bearer TokenはDeveloperPotarlに載っている
詳しくはここらへん
curl --request POST --url 'https://api.twitter.com/1.1/account_activity/webhooks.json?url=<URL>' --header 'authorization: OAuth oauth_consumer_key="<CONSUMER_KEY>", oauth_nonce="GENERATED", oauth_signature="GENERATED", oauth_signature_method="HMAC-SHA1", oauth_timestamp="GENERATED", oauth_token="<ACCESS_TOKEN>", oauth_version="1.0"'
が、↑は公式にあるコピペなのだがこれをやってもうまくいかず認証が通らなかった…
{ "errors": [ { "code": 32, "message": "Could not authenticate you." } ] }
POSTMANで解決されている方がいらっしゃったのでそれを参考にしました。
POSTMANの設定など
OAuthの設定
これはあってもなくてもいいが失敗したらいれれば良さそうもの
urlはcrcのendpoint
で、POSTリクエストを送ると...
通った。これでWebhookの登録は完了
{ "id": "xxxxxxxxxxxxx", "url": "https://xxxxxxxxxxxxxxxxxxx", "valid": true, "created_timestamp": "2021-06-30 09:03:24 +0000" }