汤博乐C#访问令牌oauth_signature与预期值不匹配401错误



我正在开发一个.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引起的。

最新更新