こんにちは、なかわけです。
PHPのPearライブラリ『Services_Twitter』を使ってみました。
基本的にとても簡単です。
が、0.4.0から使ってた人は仕様が変わったのでコードをちょこっと書き換えないといけません。
APIは、
http://api.twitter.com/1
これに基づいています。
単純にtweetしたいときは、
require_once 'Services/Twitter.php'; $username = 'Your_Username'; $password = 'Your_Password'; try { $twitter = new Services_Twitter($username, $password); $msg = $twitter->statuses->update("I'm coding with PEAR right now!"); print_r($msg); } catch (Services_Twitter_Exception $e) { echo $e->getMessage(); }
これだけでできます。
使っていてつまづいたところは、
- replyの仕方がわからなかったこと
- Services_Twitterが日本語に対応してなかったというところ
です。
replyの方法は、twitterのAPIのdocumentをよく読んだら書いてありました;
http://apiwiki.twitter.com/Twitter-REST-API-Method:-statuses%C2%A0update
具体的には、以下のようなコードです。
require_once 'Services/Twitter.php'; $username = 'Your_Username'; $password = 'Your_Password'; try { $twitter = new Services_Twitter($username, $password); $msg = $twitter->statuses->update(array( 'status' => '@friendname コメント', 'in_reply_to_status_id' => 'replyするtweetのID') ); print_r($msg); } catch (Services_Twitter_Exception $e) { echo $e->getMessage(); }
ポイントはstatus内(つぶやき内)にreplyしたい人のユーザーネームを自分で入れるのと、in_reply_to_status_idを指定すること。そして、この二つを配列にして渡すというところです。
つまづいた2点目は日本語による文字数です。
このライブラリを作ったのは外人さんなので2バイト文字のことなんで考えてません。
Services_Twitter.phpのこの部分。
if ($maxLength !== null && strlen($val) > $maxLength) {
なので、直接コードを修正します。
if ($maxLength !== null && mb_strlen($val, 'UTF-8') > $maxLength) {
一応、mb_strlen()の第2引数に文字コードを指定しておいた方が無難です。
久しぶりに個人的なコードが書けて楽しかったですヾ(*´∀`*)ノ
Tags: php, Services_Twitter, Twitter