Abstract#
とにかくAndroidアプリケーションからできるだけRealtimeにTweetを取得できるように頑張ります。Topics#
きっかけ:215 Bad Authentication data#
2018年7月に何かが変わって、APPSのページ[1]で”apply for a Twitter developer account ”をしないと新しいアプリが登録できなくなった。アカウントを登録しなおして、Twitter APIでのアプリを再登録したら、新たにいろいろ登録しないといけなくなって、あげくにいままで使えていたTimeline取得の部分が動かなくなった。ちょっと調査。エラーとしては、 |
"errors": [{ "code": 215, "message": "Bad Authentication data." }]
ちゃんと認証されていないということか。Oauthの部分がちゃんと動いていないのかな。 |
Webhook Twitter Application#
まずは、WebhookでFilterされたTweetの一覧を簡単に表示するWebアプリケーションを作ることを目指してみよう。- なんとかWebhookでリアルタイムにTimelineが取得できないかなー
あとで読む[2][4] |
- Webhook by Node.js
自分の理解では、Webhookを登録するとTwitter側がターゲットとして設定するアドレスに何かJSONか何かを投げてくれると理解。そのほうが確かにTwitter側のサーバの負荷は、減るような気がする。受けるのをNodejsにするか、Jerseyにするか。。まずは、Node.jsにしてみるか。よって[2]に従いまずやってみる。 |
{ "errors": [ { "code": 200, "message": "Forbidden." } ] }
おっと、[2]をよく読むとwebhookアドレスってHTTPSしか許可していないような気がする。それって。。。ちょっとかんがえないと。Jerseyか。。。あと、Callback URLの設定を見直してみるか。 |
- Jersey
Web Serviceで少し紹介しているが、Jerseyを使ってTomcatアプリとして、Webサービスを実装。Twitterから求められるハッシュして返す部分で必要になるHMACについては、要求内容は[6]を、実装方法は[3]や[5]を参照。作ったソースはhttps://github.com/tateshitah/webhook参照。 |
お!できた。 |
{ "id": "******************", "url": "https://braincopy.org/{web app name}/{application path}/{path}", "valid": true, "created_timestamp": "2018-10-17 00:19:47 +0000" }
"https://api.twitter.com/1.1/account_activity/all/{env name}/webhooks.json?url=https%3A%2F%2Fbraincopy.org%2F{web app name}/{application path}/{path}"のenv nameのところをAccount Activity APIのSandboxに作ったアプリケーションのApp Nameを使っていたが、Dev environment labelを使うべきだった。 | |
なんかここでSubscriptできるのって、自分のアカウントの動きのみで、欲しかった他の人のツイートをリアルタイムで受け取ることはできないような気がしてきた。 |
Reference#
- [#1]Twitter, Inc., 2018, Twitter Apps, https://apps.twitter.com/
- [#2]sbtseiji, 2018年06月10日, TwitterのAccount Activity APIとwebhookを使用する, https://qiita.com/sbtseiji/items/7957de5db0987d9a6891
- [#3]@takaki@github, 2016年07月06日, HMACをいろんな言語で, https://qiita.com/takaki@github/items/8665e6c518e377840495
- [#4]@Fushihara, 2018年05月17日, TwitterのAccount Activity APIを叩くnodejsコード, https://qiita.com/Fushihara/items/79913a5b933af15c5cf4
- [#5]andypiper, 20 Jun 2017, CRC_Example.java, https://gist.github.com/andypiper/1aa7ed86429747bb025a4c3112669d0e
- [#6]Twitter, Inc., 2018, Securing webhooks, https://developer.twitter.com/en/docs/accounts-and-users/subscribe-account-activity/guides/securing-webhooks