Test OAuth update.が投稿できないあなたへ
2010年6月にBasic Authは廃止予定…なにそれこわい
つーことで遅れながらも、少しだけOAuthに手をつけてみた。
http://wolf.silk.to/labo/oauth.html
を見ればほとんどの人がすぐTest OAuth update.を投稿できます。
だがしかし、自分はほとんど勢に入んなかった。
どこで引っかかったか紹介します。
まずoauth_test.phpで引っかかるという。
もう初期段階で引っかかった。
実行したら
上の方に
Warning: array_merge() [function.array-merge]: Argument #2 is not an array in (省略)OAuth.php on line 249
が出て、下の方には
/account/verify_credentials.xml
Could not authenticate you.
が出た。
まずここで引っかかった人はOAuth.phpにある
if ($token)
$defaults['oauth_token'] = $token->key;$parameters = array_merge($defaults, $parameters);
return new OAuthRequest($http_method, $http_url, $parameters);
の
$parameters = array_merge($defaults, $parameters);
に
$parameters = array_merge($defaults,(array)$parameters);
というように(array)を加えてください。
するとあら不思議。
上のエラーがみごと消える。
次は下のエラーを消す。
oauth_test.phpにある
$content = $to->OAuthRequest('https://twitter.com/account/verify_credentials.xml', array(), 'GET');
のGETの位置を変える。
$content = $to->OAuthRequest('https://twitter.com/account/verify_credentials.xml', 'GET', array());
こういうふうに。
そして、実行するとあら不思議!
下のエラーがみごと個人情報に!
実際にPHP+OAuthでTwitterにPOSTするのプログラムを実行するときも
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml",array("status"=>"Test OAuth update."),"POST");
を
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"Test OAuth update."));
に直してあげてください。
少しでもお役にたてれば嬉しいです。
追記
[2009/12/16] twitterOAuth.phpのことでご指摘があったので、修正しました。この説明ではバージョン0.1.1を使っています。
紹介していただいているサイトさんでの指摘というのは、バージョン0.1.1以外(0.2.0-betaなど)を使ってしまったためにエラーが出ていると思われます。
「twitterOAuth.php」であり、「twitteroauth.php」ではありません。ご注意ください。
コピペですいません。
みなさん、バージョンに注意ですよ!