添加回调网址时Twitter API oAuth签名失败

时间:2012-12-30 21:34:45

标签: twitter oauth callback

我正在使用此代码/指南another twitter oAuth cURL access token request that fails来测试我对API的请求。我仍在尝试通过this

的第1步

注意:密钥只是随机的,它们不是真的:)

当我尝试在没有oauth_callback的情况下发出请求时,我从api获得了有效的响应

  

https://api.twitter.com/oauth/request_token?oauth_consumer_key=nHb2kSQ2CD9MW1MdW5VeQ&oauth_nonce=1356902849&oauth_signature=MbvhwGiNPKQR0klUPx9fsmUtdJY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1356902849&oauth_version=1.0

当我添加oauth_callback字符串时(必须让用户使用重定向进行签名!)我得到“无法验证oauth签名和令牌”

  

https://api.twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2F127.0.0.1%2Ftest%2F&oauth_consumer_key=nHb2kSQ2CD9MW1MdW5VeQ&oauth_nonce=1356902915&oauth_signature=2WTaI9jXNBaDd7f8AqIe6y3%2Beno%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1356902915&oauth_version=1.0

我的意思是两个网址之间没有区别,它们都经历相同的执行,并且他们尊重签名方法。 怎么解决?

是的,我在Twitter应用设置中添加了http://127.0.0.1/test/作为回调网址。

谢谢

3 个答案:

答案 0 :(得分:1)

您是否在Twitter应用程序设置中设置了回调网址?

如果你没有设置,api可能会失败。

here检查:

enter image description here

同时检查您的时间是否同步(使用NTP服务器);见:https://dev.twitter.com/discussions/1043

答案 1 :(得分:1)

同意twitter API记录严密:)

遵循此规则:

  1. 如果 oauth_callback 不包含任何查询字符串=不需要任何时髦。
  2. 如果您的 oauth_callback 分别有任何查询字符串参数= 网址编码查询字符串参数。
  3. 希望这能解释。

答案 2 :(得分:0)

我解决了这个问题。问题是即使回调URL是使用查询字符串方法或标题正确发送的,正如您在链接上看到的那样,当从基本字符串创建签名时,它也被双重转义。由于文档相当糟糕,我不认为你不应该像其他oauth_ *参数那样双重逃避它(也就是百分比编码“&”s。)