我正在开发一个.net应用程序来访问我的tumblr帐户。
在ouath握手中,我正在完成授权步骤。然而,当我试图获取我的访问令牌时(在我授权我在tumblr上的帐户授予我的应用程序权限后),我收到了一个401错误oauth_signature与预期值不匹配
这是我的url,我正在调用它来获取访问令牌…这种格式有问题吗?(出于隐私目的,我为我的消费者密钥、oauth令牌和oauth验证器放入了一些z)。这与我在twitter上使用的格式相同,效果很好。
有什么想法吗?
http://www.tumblr.com/oauth/access_token?oauth_callback=oob&oauth_consumer_key=UDwa2ZMvBGU53XXXXXXXXXXXXXXXXXXXX&oauth_nonce=929949&oauth_signature_method=HMAC-SHA1&oauth_ timestamp=1345645132&oauth_token=kg6M3FeYUoHVEMRQZZZZZZZZ;oauth_verifier=BgXcqcmyiSuJWHggMzCQcZZZZZZZZ&oauth_version=1.0&oauth_signature=iPbc5kE5LbudXJm1MVc0VNeIQxA%3D
事实证明,在为请求授权设置URL的步骤中获得的oauth令牌机密也需要保存,然后在获得访问令牌和机密的最后一步中使用。
您只需要在执行对的调用后提取oauth_token_secret
https://www.tumblr.com/oauth/request_token
第二次调用的参数:
$params = array(
"oauth_consumer_key" => $this->key,
"oauth_nonce" => time(),
"oauth_signature_method" => "HMAC-SHA1",
"oauth_timestamp" => time(),
"oauth_token" => $tumblr_oauth_token,
"oauth_verifier" => $oauth_verifier,
"oauth_version" => "1.0",
);
然后将token_secret
用于oauth_signature
:
$secret = encode_rfc3986($token)."&".encode_rfc3986($token_secret);
$params['oauth_signature']=encode_rfc3986(base64_encode(hash_hmac('sha1',$baseString, $secret, TRUE)));
全部完成。该问题是由于oauth_signature
引起的。