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」ではありません。ご注意ください。

コピペですいません。
みなさん、バージョンに注意ですよ!