Twitter 请求令牌 OAuth 401 错误

Twitter request token OAuth 401 error

尝试使用 OAuth 添加 Twitter 登录,请求令牌的第一步一直是一场噩梦,这总是导致 401 错误。

我使用了 Twitter 的测试 OAuth 工具来比较我的 Scala 服务器发送的 http 请求。
Curl 请求 有效 而我的 服务器 请求 失败 。将它们粘贴在下面进行比较。

Curl请求

curl --request 'POST' 'https://api.twitter.com/oauth/request_token' --data 'oauth_callback=http%3A%2F%2F0.0.0.0%3A8081%2Fweb' --header 'Authorization: OAuth oauth_consumer_key="wRflKWWomJ9jKeK8wbTk0Jck3", oauth_nonce="46ef029600fcc2a6cbe068eb9711401c", oauth_signature="3ptB%2B6%2Fv9QYGgyQjO9DhuD7pmzA%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1422879905", oauth_version="1.0"' --verbose

Scala 服务器请求

HttpRequest(POST,https://api.twitter.com/oauth/request_token,List(Authorization: OAuth oauth_consumer_key="wRflKWWomJ9jKeK8wbTk0Jck3", oauth_nonce="70449464359328", oauth_signature="yEni23tuzEveIMtDm7%2F8N2anU%2FM%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1422879900", oauth_version="1.0"),HttpEntity(application/x-www-form-urlencoded,oauth_callback=http%3A%2F%2F0.0.0.0%3A8081%2Fweb),HTTP/1.1)

我试过的东西:

对于许多人来说,这个 401 推特请求令牌似乎是一个反复出现的主题,并因各种故障点而变得复杂。非常感谢任何帮助。

对于面临此问题的任何其他人,我列出了一些您可以从中受益的事情。

After excruciating attempts of permutations and combinations, oauth_token had to be a part of the signature (even if its value is empty string).

I am not sure if it is mentioned anywhere and particularly ironic that you had to remove access token and secret while using Twitter's OAuth testing tool (for the Curl command to work properly which took some bloody lot of time to figure out.)

  • 验证你的basestring很好 - Tool

  • 正在验证您的签名过程是否正确 - Check point (f)

另一种可能的情况

在我的 Twitter 客户端应用程序设置屏幕中,我设置了一个选项 "Enable Callback Locking (It is recommended to enable callback locking to ensure apps cannot overwrite the callback url)",这导致我在尝试获取请求令牌时收到 401 未经授权的错误。