実はカンタン!Twitter API 1.1にbotを対応させました!

Sponsored Link

ganezaTwitter 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
惜しいタイミングでした。
ついでにライブラリ入れ替えも試してみようかな・・・。

Sponsored Link

コメントを残す