如何使用Twitter使用OAuth获取request_token

时间:2010-03-02 10:00:45

标签: twitter oauth

我使用以下方法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


请纠正我在哪里弄错了。

2 个答案:

答案 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,则会看到您提及的签名验证错误。