无法通过Twitter进行身份验证(OAuth问题)

时间:2014-02-07 23:15:41

标签: python twitter oauth

我正在尝试为Twitter OAuth身份验证编写Python代码。当我尝试请求令牌时,我收到“401 Unauthorized”错误代码。

在尝试诊断我的问题的过程中,我将通过身份验证过程的每一步,并尝试隐藏我正在制作的任何错误。关于生成“签名基本字符串”,我找到了一个尝试帮助验证签名基本字符串的在线工具:http://quonos.nl/oauthTester/

当我使用这个工具时,它会抱怨:

Bad URL encoding!

Both key and value in the POST body need to be URL encoded.

以下是我的Python代码生成的示例基本字符串示例:

POST&https%3A%2F%2Fapi.twitter.com%2F1.1%2Foauth%2Frequest_token&oauth_callback%3Doob%26oauth_consumer_key%3DeXL46FKblmfiXHvmC3wcew%26oauth_nonce%3DTAHTO%2FmlyeJ1x9FrgFixosZPYVhvWLXmq%2BdKKTL1rTY%3D%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1391813822%26oauth_version%3D1.0

当我将此字符串粘贴到验证器中时,它会显示:

    Bad URL encoding!

    Both key and value in the POST body need to be URL encoded.

    In this case: "TAHTO/mlyeJ1x9FrgFixosZPYVhvWLXmq+dKKTL1rTY" is bad

我很困惑,因为URL 中的所有键/值对都是,事实上,URL编码(我假设“URL编码”在这里意味着“百分比编码”。)

我的基本字符串在这里有什么问题吗?

修改

我发送给Twitter以请求令牌的实际HTTP请求标头是:

POST /1.1/oauth/request_token HTTP/1.1
Accept-Encoding: identity
Content-Length: 0
Connection: close
Accept: */*
User-Agent: Python-urllib/3.2
Host: api.twitter.com
Content-Type: application/x-www-form-urlencoded format
Authorization: OAuth oauth_callback="oob", oauth_consumer_key="eXL46FKblmfiXHvmC3wcew", oauth_nonce="nBcVYSqv8FEi0d7MEs8%2BqtqvdYA9JcbnW%2BVqoP%2FGlrI%3D", oauth_signature="WT9c3U5Puam7dEnMt3DWDsyVAHw%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1391815422", oauth_version="1.0"

0 个答案:

没有答案