[{PageViewPlugin}]
[Emergency Situation Sharing Tool]
!!!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を使うべきだった。[{Image src='Twitter Account Activity API/sandbox.png' width='600'}]
|なんかここで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]