5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TwitterのAccount Activity APIを叩くnodejsコード

Posted at

2018/05/17 01:02(JST)にTwitterのAccount Activity APIが一般公開されました。
image.png
https://twitter.com/TwitterDev/status/996782993200025600

nodejsで叩いてみたのでサンプルコードの説明をします。

リンク集

やり方

エンドポイントのURLを決める。WebHookなので、外部から叩けるページ。
このサンプルではhttps://example.com/twitter-webhook-test/とします。もちろんパス名はなんでもいい。
あと、アプリのラベル名も決める。これはurlの一部になるので1単語がよい。今回はtestとする。

twitterのアプリにコールバックURLを設定する
Twitter Application Management よりアプリを登録。権限は全部入りの「Read, write, and direct messages」で。Callback URLの所に、エンドポイントのURLを入れる。ここではアプリのラベル名は使わない。
image.png
Add a callback urlのボタンを押してリストを増やすと、消すことが出来ないので注意。二個目は適当なURLを入れておけば問題は無いが、消す手段が無い。

4つのキーをメモする。以下のキーは全て作成し直しましたので無効です。
image.png

次に、上記でapps.twitter.comに登録したアプリを、developer.twitter.comに関連付ける。
Dev Environments — Twitter Developers
「Account Activity API Sandbox」を選んで
image.png
アプリのラベル名をここで入力し、apps.twitter.comで作成したアプリを選択する。
image.png
「Account Activity API Sandbox」の項目に反映される。
image.png
この画面でのアプリの登録はもちろん解除出来るが、アプリのラベル名は裏で覚えているらしく、登録解除後 再度同じ名前で登録しようとすると弾かれる。だから「test」という名前は慎重に使おう。

これでtwitterのwebページからの設定は終了。

次に自鯖での作業。上記で決めた、エンドポイントのドメインのサーバーで実行するとよい。nodejsの環境を作ること。
使うapiは一般と企業向けでURLが違い、公式のサンプルは使いにくかったので、描き直した。

https://github.com/fushihara/twitter-account-activity-api-sample をgit cloneする。
cloneしたフォルダに以下の4つのファイルがある事を確認する

cli.js
config.sample.json
package.json
server.js

config.sample.jsonconfig.jsonにコピーする。上記でメモった情報を埋める。
この時点ではhookIdの項目は空文字でよい。expressWatchPathは、webhookUrlのパス部分と一致させる。
devLabelがアプリのラベル名。


{
  "TWITTER_CONSUMER_KEY": "xxxxxx",
  "TWITTER_CONSUMER_SECRET": "xxxxxx",
  "TWITTER_ACCESS_TOKEN": "xxxxxx",
  "TWITTER_ACCESS_TOKEN_SECRET": "xxxxxxx",
  "devLabel": "test",
  "hookId": "",
  "webhookUrl": "https://example.com/twitter-webhook-test/",
  "expressWatchPath":"/twitter-webhook-test/"
}

そしてnode server.jsを起動する。表示の通り5000番ポートで待ち受けるので、nginxの環境を変えるなり、待受ポートを80にして直で受けるなりする事。

[xxx@example.com twitter-webhook-sample]$node server.js 
Node app is running on port 5000

webhookUrlにブラウザからアクセスするとError: crc_token missing from request.というメッセージが表示されればOK。

もう一つターミナルを立ち上げる。
次はcli.jsを使う。上記のスクリプトがある同じディレクトリに移動して、cli.jsにregist subsc get-list と順番にパラメータを与えて実行する。これで受信準備OK

[xxx@example.com twitter-webhook-sample]$node cli.js regist
{"id":"900000000000000000","url":"https://example.com/twitter-webhook-test/","valid":true,"created_timestamp":"2018-05-16 19:07:54 +0000"}
[xxx@example.com twitter-webhook-sample]$node cli.js subsc
204 No Content

[xxx@example.com twitter-webhook-sample]$node cli.js get-list
[{"id":"900000000000000000","url":"https://example.com/twitter-webhook-test/","valid":true,"created_timestamp":"2018-05-16 19:07:54 +0000"}]

server.js側のターミナルにreceive crc check. token=xxxxxxxx responce=xxxxxxxxxxxxx=というログが出ている事も確認する。
その後、Twitterで自分のアカウントでツイートしたり、自分でお気に入りツイートをfavったりする。するとserver.jsのターミナルに今までのstreaming apiのようなjsonが流れてきます。
どうやら、他人のツイートは見れないっぽい。公式には無料ユーザーでも「15 subscriptions / period」と書いてあるけど、これは何が15件なんだろう・・・。

登録解除する時は、上記のターミナルで表示されたid 今回は900000000000000000をconfig.jsonのhookIdの項目に記入する。そしてnode cli.js delを実行。

これで登録→確認→削除 の流れは確認する事が出来たと思う。streaming apiの代替には全くならない。アナウンスの通り、2018/08/16にstreaming apiは終了される予定。

以上です。

5
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?