【发布时间】:2013-11-27 06:12:23
【问题描述】:
我已按照this stackoverflow question 中发布的说明进行操作,但我被卡住了。
我正在使用来自 Github 的 tumblr/tumblr.php(官方“tumblr API 的 PHP 客户端”)。
我也遵循here 的指示(实际上是针对 twitter 的),但这些指示并不是为我正在使用的 git 库量身定制的。
我有一个有效的消费者密钥和秘密。
从我提出请求并像这样获得 oauth_token 和 oauth_token_secret 的人:
$client = new Tumblr\API\Client($consumerKey,$consumerSecret);
$client->getRequestHandler()->setBaseUrl('https://www.tumblr.com/');
$req = $client->getRequestHandler()->request('POST', 'oauth/request_token', [
'oauth_callback' => '...',
]);
// Get the result
$result = $req->body->__toString();
print_r( $result );
这给了我:
oauth_token=2C6f...MqSF&oauth_token_secret=HaGh...IJLi&oauth_callback_confirmed=true
然后我将用户发送到http://www.tumblr.com/oauth/authorize?oauth_token=2C6f...MqSF,以便他们允许访问该应用程序。这会重定向到:...?oauth_token=2C6f...MqSF&oauth_verifier=nvjl...GtEa#_=_
现在在最后一步,我相信我应该将我的请求令牌转换为访问令牌。是对的吗?我做错了什么:
$client = new Tumblr\API\Client($consumerKey,$consumerSecret);
$client->getRequestHandler()->setBaseUrl('https://www.tumblr.com/');
$req = $client->getRequestHandler()->request('POST', 'oauth/access_token', [
'oauth_token' => '2C6f...MqSF',
'oauth_verifier' => 'nvjl...GtEa'
]);
// Get the result
$result = $req->body->__toString();
print_r( $result );
因为我收到了这样的回复:
oauth_signature [AqbbYs0XSZ7plqB0V3UQ6O6SCVI=] does not match expected value [0XwhYMWswlRWgcr6WeA7/RrwrhA=]
我的最后一步有什么问题?
我不确定我是否应该在请求中发送oauth_verifier。 #_=_ 应该是 oauth_verifier 的一部分吗?我不会这么认为。我尝试过的所有变体都有签名错误。
没有 token 和 tokenSecret 我无法对 API 进行某些调用。我收到未经授权的 403 响应。当我使用第二步中的 token 和 token_secret 时也是如此。我很确定我需要一个新的令牌/秘密对。
【问题讨论】: