尝试使用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)
我尝试的事情:
对于许多人来说,这个401推特请求令牌似乎是一个反复出现的主题,并且有各种各样的失败点。非常感谢任何帮助。
答案 0 :(得分:1)
对于遇到此问题的其他人,我列出了一些您可以从中受益的内容。
在排列和组合的极度尝试之后,
oauth_token
必须是签名的一部分(即使它的价值是 空字符串)。
我不确定是否在任何地方都提到过,特别具有讽刺意味的是,在使用Twitter的OAuth测试工具时,你必须删除访问令牌和秘密(因为Curl命令工作正常,需要花费大量时间弄清楚。)
最好验证您的基本字符串 - Tool
验证您的签名过程是否正确 - Check point (f)
答案 1 :(得分:0)
在我的Twitter客户端应用设置屏幕中,我设置了一个选项"启用回叫锁定(建议启用回调锁定以确保应用无法覆盖回调网址)" 这导致我在尝试获取请求令牌时遇到401未经授权的错误。