我使用以下方法URI从twitter请求令牌。
注意:此处新行仅用于显示目的。
http://twitter.com/oauth/request_token?
oauth_consumer_key=9cS99b2406CUpATOeggeA&
oauth_signature_method=HMAC-SHA1&
oauth_signature=3e18bafc4c4fd6b23f988bcd1a8c0ab2d65db784
oauth_timestamp=1267523137&
oauth_nonce=56e66e9f8bd28b320f86a16407f9911d&
oauth_version=1.0&
oauth_callback=http://playground.com
但它提供错误“无法验证oauth签名和令牌”。
我以前用于计算机签名的基本字符串如下:
GET&
http%3A%2F%2Ftwitter.com%2Foauth%2Frequest_token&
oauth_consumer_key%3D9cS99b2406CUpATOeggeA%26
oauth_signature_method%3DHMAC-SHA1%26
oauth_timestamp%3D1267523137%26
oauth_nonce%3D56e66e9f8bd28b320f86a16407f9911d%26
oauth_version%3D1.0%26
oauth_callback%3Dhttp%3A%2F%2Fplayground.com
请纠正我在哪里弄错了。
答案 0 :(得分:4)
您的问题在于参数的顺序。基本字符串的参数需要按顺序排列。如果它们出现故障,它会给你错误。
所以你的基本字符串应该是这个......
GET&
http%3A%2F%2Ftwitter.com%2Foauth%2Frequest_token&
oauth_consumer_key%3D9cS99b2406CUpATOeggeA%26
oauth_nonce%3D56e66e9f8bd28b320f86a16407f9911d%26
oauth_signature_method%3DHMAC-SHA1%26
oauth_timestamp%3D1267523137%26
oauth_version%3D1.0%26
oauth_callback%3Dhttp%3A%2F%2Fplayground.com
请注意,您的“nonce”不在正确的位置。
此外,通常,“signature”参数会附加到请求URL的末尾。
http://oauth.net/core/1.0a/#anchor46
附录A.5.1
答案 1 :(得分:0)
Eclipsed4utoo说了什么 - 虽然如果你仍然收到错误,你应该检查你是否在Twitter开发管理页面中注册了你的应用程序是基于浏览器(并指定了一个回调)。
如果它被列为桌面应用,但您在调用中包含& oauth_callback,则会看到您提及的签名验证错误。