AbyssLukeのガイドライン(更新停止)

はてダから移転。このブログは更新されません。

突然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'])


…中略…


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

Docs For Class HTTP_OAuth_Consumer

そういえば

この現象が起きる数日前、Request Token取得以外のAPIのリクエストがすべて404 Not foundになってしまう謎現象がおきていた。Tumblr APIを使う他のアプリ(はむーん)には異常なし。
しばらくしたら直ったけど、Tumblr API解せぬ。マジ解せぬ。
それとこのスクリプト制作当初、unlikeも仕掛けてみたが、reblog-keyとか間違っていないはずなのに404になったりするから激ナゾ解せぬ丸。