Twitter Account Activity API の登録

f:id:pigggg:20210811210447p:plain

AccountActivityAPIとは

  • Stream APIの後継。
  • Stream APIの場合はActivityがあるか定期的な問い合わせが必要だったが、ActivityAPIはなにかしらのアクションがあった場合に知らせてくる 詳しくはここ

AccountActivityAPIの登録まで

  1. Twitterの開発者アカウント登録
  2. 環境設定
  3. 実装
  4. Webhook登録  
     

1. Twitterの開発者アカウント登録

ぐぐると山のように出てくるので割愛。申請後にTwitterから申請時と同じ様な内容をメールで送る必要がある。
そのメールに返信すると審査が通る。大体3~4日くらいで通った。

 

2. 環境設定

開発者アカウントにログイン後、左メニューの「Dev Enviroments」を選択し、Account Activity API / Snadbox 項目の「Set up enviroment」をクリックする。
適当に設定して終了。今回のラベル名はdevにした。

 

3. 実装

諸々の設定が終わったらTwitterのwebhookイベントを受信するWebアプリを実装する。 詳しくはここらへん

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に載っている
詳しくはここらへん

は実装したCRC APIのエンドポイント

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の設定 f:id:pigggg:20210630202344p:plain

これはあってもなくてもいいが失敗したらいれれば良さそうもの
f:id:pigggg:20210630202428p:plain

urlはcrcのendpoint f:id:pigggg:20210630202439p:plain
で、POSTリクエストを送ると...

通った。これでWebhookの登録は完了

{
    "id": "xxxxxxxxxxxxx",
    "url": "https://xxxxxxxxxxxxxxxxxxx",
    "valid": true,
    "created_timestamp": "2021-06-30 09:03:24 +0000"
}