Twitter APIが1.1にバージョンアップされてから10日程経過しました。
これによって新APIに対応していないアプリケーションは動作しなくなりました。
ということで、自分の作ったガネーシャbotも動かなくなっていました。
もちろん事前に対応したかったのですが、やり方が分からなかったので放置していたのですが、調べてみると意外と簡単に対応できるようで w
そんな、シンプルなbotの場合のTwitter API 1.1対応方法をまとめました。
Sponsored Link
僕のガネーシャbotの説明についてはこちらをどうぞ
「夢をかなえるゾウ」のガネーシャbotを作りました | kira-ism
ガネーシャbotはtwitteroauth.phpというライブラリを利用して動かしています。
なので、twitteroauth.phpをアップデートさせればいいとタカをくくっていたのですが、そもそもtwitteroauth.phpはTwitter APIが1.1にまだ対応したバージョンをリリースしていませんでした・・・。
さて、調べてみるといってもTwitter API 1.1の仕様を調べてとかではなく、同じようなことをやってエントリにしている方がいるのですねー。ありがたい。
今回参考にしたのはサイトを少し修正した(twitteroauth.phpのAPI 1.1対応化,DISQUS導入,雑記帳研究室のテーマ変更とか…) | 雑記帳研究室さん。
具体的に自分がやったのは、twitteroauth.phpの
/* Set up the API root URL. */public $host = "https://api.twitter.com/1/";
を
/* Set up the API root URL. */public $host = "https://api.twitter.com/1.1/";
に、
/* Set the useragnet. */public $useragent = 'TwitterOAuth v0.2.0-beta2';
を
/* Set the useragnet. */public $useragent = 'TwitterOAuth v0.2.0-beta2 (compatible with API 1.1)';
に、
/* Verify SSL Cert. */public $ssl_verifypeer = FALSE;
を
/* Verify SSL Cert. */public $ssl_verifypeer = TRUE;
に、
そしてbotのプログラムの発言部分を
$response = $twitter->post($method, $parameters);
から
$response = $twitter->OAuthRequest('http://api.twitter.com/1.1/statuses/update.json', 'POST', array('status' => $status));
に(ここは自作プログラム部分なので人によっていろいろですね)しました。
なんとこれだけで動きました。
つまり、APIのバージョンと、User-Agent(自分でカスタムしていいっぽい)、データフォーマットをxmlからjsonにするだけでした。
SSLについてはどっちでも動くっぽいのですが、SSL化していく流れでしょ、ということでTRUEにしました。
自分の場合はもともとjsonで作っていたのですが、xmlで作っていた方は手間がもっと掛かるのではないかと思います。
本格的なプログラムではこうはいかないのでしょうが、cronで周期的に発言するだけのbotであれば(更にjsonで作っていれば)、この程度で対応できるんですね。
もっと早くにちゃんと調べてやればよかった・・・と反省しました。
いきなり追記
先ほど確認したらtwitteroauth.phpのTwitter API 1.1対応版がリリースされていました!!!しかもタイムスタンプが6/21とか・・・。
ダウンロードはここから→abraham / twitteroauth
惜しいタイミングでした。
ついでにライブラリ入れ替えも試してみようかな・・・。