OAuth認証 for Twitter

TwitterBASIC認証が8月16日から使えなくなります。そのため、以前書いた、cURL認証を使った方法は使えなくなります。

参考:


要は、OAuth認証してAPIを利用するには、
Consumer key, Consumer secret, Access Token (oauth_token), Access Token Secret (oauth_token_secret)
の4つが必要。あとはGETやらPOSTやらDELETEやらで、やり取りをすれば良い。

なお、認証が必要なコールについては

$to = new TwitterOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret);

だが、認証が不要なコールについては

$to = new TwitterOAuth('','','','');

でも行ける。
また、methodとしてはPOST, GET以外にも、DELETEも使える。



さて、投稿するときには、

	$params = array("status"=>$message);
	$url = "https://twitter.com/statuses/update.json";
	$req = $to->OAuthRequest($url,"POST",$params);

とするが、この$messageはこれまでcURLを使っていたときにはurlencode()した値を渡していた。
しかし、このAPIだと、urlencode後の文字数を数えているよう、余裕で140字をオーバーしてしまう。
とりあえず、urlencode()は外して投稿するようにしているが、なにか対策があれば教えてください。



ちなみに
http://www.hosimitu.com/2009/11/2020-1358.phpにある

//in_reply_to_status_idを指定するのならば array("status"=>"@hogehoge reply","in_reply_to_status_id"=>"0000000000"); とする。
//$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml",array("status"=>$mes,"in_reply_to_status_id"=>"0000000000"),"POST");

これを試してみると、ちゃんと"in reply to"と表示させられる。これはbotにRTさせるときに有用ではないかと思う。