当我指定回调网址时,推特OAuth "Could not authenticate you"



我在request_token阶段遇到Twitter OAuth 1.0问题

如果我设置了ooboauth_callback(甚至省略回调 url(,那么它可以正常工作,但之后当然不会将用户重定向到我的 Web 应用程序。

:注:我可能以错误的方式处理这个问题。我只想指定一个 URL,在 Twitter 上授权 OAuth 请求后,客户端浏览器应定向到该 URL

一旦我将oauth_callback更改为应用的回调 url,就会收到错误"无法对您进行身份验证">

我已经在推特上的应用程序设置中将回调网址设置为与我在request_token进程的oauth_callback参数中设置的网址完全相同的网址,仅供参考,这是一个HTTPS基本网址,即没有指定路径,https://www.example.com/

任何帮助将不胜感激

更新

此请求有效(根本没有指定回调 URL(:

POST https://api.twitter.com/oauth/request_token HTTP/1.1
Authorization: OAuth oauth_consumer_key="----myconsumerkey----", oauth_nonce="r70s1926", oauth_signature="iFGmXEpDav0lVpge9Ls9ACGI6r0%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1503053275", oauth_version="1.0"

此请求不会(指定回调 URL,与推特应用设置相同(:

POST https://api.twitter.com/oauth/request_token HTTP/1.1
Authorization: OAuth oauth_callback="https%3A%2F%2Fwww.example.com", oauth_consumer_key="----myconsumerkey----", oauth_nonce="707n8282", oauth_signature="0KWzeJwQ%2FNMfmdZ%2Bt0zNEU4g3Ag%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1503053306", oauth_version="1.0"

上面的请求返回:

{"errors":[{"code":32,"message":"Could not authenticate you."}]}

因为排除或 oob 的设置有效,所以听起来像是签名生成中的编码问题。

检查 oauth_callback url 是否在签名基字符串中进行了双重编码,该字符串应如下所示:

POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttps%253A%252F%252Fwww.example.com%26oauth_consumer_key%3Dmyconsumerkey%26oauth_nonce%3D707n8282%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1503057157%26oauth_version%3D1.0

最新更新