突然Request Tokenが取れなくなったので対処
自作のtumblrでlikeした画像をDropboxに保存するPHPスクリプト(PEARのHTTP_OAuth利用)が、突然Request Tokenの取得で止まる(400 Bad Request)のでフォーラムを参照して以下のようにいじったらなおってしまったのでメモ
Before
$consumerをHTTP_OAuth_Consumerのインスタンスとしている。
<?php //当該部分のみ $consumer->getRequestToken('http://www.tumblr.com/oauth/request_token'); ?>
After
フォーラムにはRubyの例だがget_request_tokenのところを「consumer.get_request_token(:exclude_callback => true)」にしてみて、とあったので、以下のように第2パラメータに空白を代入すると動作するようになった。
<?php //当該部分のみ //tumblrの突然の仕様変更のため //HTTP_OAuth_Consumer::getRequestTokenの2ndパラメータ(callback)を //空白にしないとtoken取れない 2013/05/21 $consumer->getRequestToken('http://www.tumblr.com/oauth/request_token',''); ?>
デフォルトでcallbackはoob
ドキュメントを見ると$callbackにはデフォルトでoobが入っており、これがエラーの原因になっている模様。
void getRequestToken( string $url, [string $callback = 'oob'], [ $additional = array()], [string $method = 'POST'])
Docs For Class HTTP_OAuth_Consumer
…中略…
Parameters:
string $url ― Request token url
string $callback ― Callback url
array $additional ― Additional parameters to be in the request recommended in the spec.
string $method ― HTTP method to use for the request