#記事の概要
twitter botを作ってみたくなったので、そのときの作業ログ
ここではPHPを使ってtwitter botの開発をしてみようと思います。
#下調べ
まずは検索ワードを「twitter bot 開発」とかして
適当にGoogle先生に問い合わせ。こんな記事が出てきました。
http://gihyo.jp/dev/serial/01/twitterbot/0003
なるほど、自作のフルPHPスクリプトで開発するとなると、
OAuthあたりがちょい面倒そうなんですね。
とりわけ、ここは上記の記事を参考に。
githubにtwitteroauthなるものがあるようです。
こちらをお借りしましょう。
#事前準備
twitterにbot用のアカウントを作成
作成するアプリケーションの登録
twitterアカウントでデベロッパーサイトにログインする
デベロッパーサイトはこちらから。
https://dev.twitter.com/apps
必要事項を記入してアプリケーションを登録する
既にデベロッパーに登録されているアプリケーション名は登録できないので注意
登録完了したら、AccessLevelを「Read and write」に変更する
これをやっておかないと、後で以下のようなエラーで弾かれる。
object(stdClass)#5 (2) {
["request"]=>
string(25) "/1.1/statuses/update.json"
["error"]=>
string(34) "Read-only application cannot POST."
}
ここまで準備できたら、アクセストークンを発行する
「Details」タブに戻り、「Create my access token」ボタンをクリックすると、「Access token」と「Access token secret」が発行される。(後でOAuthの認証部分で使用する)
twitteroauthを導入し、プログラムからtwitterに投稿してみる
1.githubのソースコードをFork -> clone
s git clone git@github.com:hoge/twitteroauth.git
中身はこんなん。
s cd twitteroauth/
s ls -l
合計 60
-rw-rw-r-- 1 mtaji mtaji 1100 3月 24 14:26 2013 LICENSE
-rw-rw-r-- 1 mtaji mtaji 5118 3月 24 14:26 2013 README.md
-rw-rw-r-- 1 mtaji mtaji 1503 3月 24 14:26 2013 callback.php
-rw-rw-r-- 1 mtaji mtaji 245 3月 24 14:26 2013 clearsessions.php
-rw-rw-r-- 1 mtaji mtaji 240 3月 24 14:26 2013 config-sample.php
-rw-rw-r-- 1 mtaji mtaji 748 3月 24 14:26 2013 connect.php
-rw-rw-r-- 1 mtaji mtaji 1261 3月 24 14:26 2013 html.inc
drwxrwxr-x 2 mtaji mtaji 4096 3月 24 14:26 2013 images
-rw-rw-r-- 1 mtaji mtaji 1360 3月 24 14:26 2013 index.php
-rw-rw-r-- 1 mtaji mtaji 954 3月 24 14:26 2013 redirect.php
-rw-rw-r-- 1 mtaji mtaji 11913 3月 24 14:26 2013 test.php
drwxrwxr-x 2 mtaji mtaji 4096 3月 24 14:26 2013 twitteroauth
2.twitterに投稿するコードを書く
例えばこんな感じ。意外とシンプル。
s sudo vim TweetTest.php
s cat TweetTest.php
<?php
require_once(dirname(__FILE__)."/twitteroauth/twitteroauth/twitteroauth.php");
// developer info
$consumerKey = ‘XXXXXXXXXXXXXXXX;
$consumerSecret = 'XXXXXXXXXXXXXXXX';
$accessToken = 'XXXXXXXXXXXXXXXX';
$accessTokenSecret = 'XXXXXXXXXXXXXXXX’;
$oAuth = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
// oAuth認証を利用し、twitterに投稿する
$TWITTER_STATUS_UPDATE_URL = "http://api.twitter.com/1.1/statuses/update.json";
$method = 'POST';
$message = 'テスト';
$response = $oAuth->post('statuses/update', array('status' => $message));
// 結果出力
var_dump($response);
?>
3.実行
実行してみたらエラーが。
s php TweetTest.php
<pre>object(stdClass)#5 (1) {
["errors"]=>
array(1) {
[0]=>
object(stdClass)#6 (2) {
["message"]=>
string(23) "Timestamp out of bounds"
["code"]=>
int(135)
}
}
}
</pre>
「Timestamp out of bounds」
サーバの時間がずれているのが原因っぽい。
時間を設定。
s sudo date -s "01/09 10:15 2014"
2014年 1月 9日 木曜日 10:15:00 JST
再度実行。
成功すると長ったらしいjsonが返ってくる。
s php TweetTest.php
<pre>object(stdClass)#5 (22) {
["created_at"]=>
string(30) "Thu Jan 09 01:35:06 +0000 2014"
["id"]=>
int(XXXXXXXXXXXXXX)
["id_str"]=>
string(18) “XXXXXXXXXXXXXXXXXX”
["text"]=>
string(9) "テスト"
・・・
4.表示確認
大丈夫そう!
twitter botを作ってみる(第1回〜twitteroauth導入編)
twitter botを作ってみる(第2回〜応用編-メッセージのランダマイズ)
twitter botを作ってみる(第3回〜作成したスクリプトを自動実行する)