Twitter请求令牌OAuth 401错误

时间:2015-02-02 12:50:22

标签: twitter oauth

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

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

卷曲请求

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)

我尝试的事情:

  • 确保时间戳在5分钟内
  • 确保“允许此操作 用于登录Twitter的应用程序“在twitter中设置 设置。
  • 设置回调网址 - http://0.0.0.0:8081/web(甚至尝试过 通过更改ip表来确定localhost的代理名称。
  • 尝试使用Saclaj
  • 生成请求令牌
  • 主要使用OAuth.scala
  • 使用的自定义OAuth签名请求

对于许多人来说,这个401推特请求令牌似乎是一个反复出现的主题,并且有各种各样的失败点。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

对于遇到此问题的其他人,我列出了一些您可以从中受益的内容。

  

在排列和组合的极度尝试之后,   oauth_token必须是签名的一部分(即使它的价值是   空字符串)。

我不确定是否在任何地方都提到过,特别具有讽刺意味的是,在使用Twitter的OAuth测试工具时,你必须删除访问令牌和秘密(因为Curl命令工作正常,需要花费大量时间弄清楚。)

  • 最好验证您的基本字符串 - Tool

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

答案 1 :(得分:0)

另一种可能的情况

在我的Twitter客户端应用设置屏幕中,我设置了一个选项"启用回叫锁定(建议启用回调锁定以确保应用无法覆盖回调网址)" 这导致我在尝试获取请求令牌时遇到401未经授权的错误。