Twitter,JavaScript& OAuth:无法验证oauth签名和令牌

时间:2010-06-08 12:14:32

标签: javascript oauth twitter

我尝试使用JavaScript实现OAuth,但是当我向http://api.twitter.com/oauth/request_token发出请求时,我在响应中收到了上述消息(“未能验证oauth签名和令牌”)。

据我所知,我在编码签名库时都包含了所有正确的参数:

basestring :(为了安全起见,删除了用户密钥)

  

POST&安培; HTTP%3A%2F%2Ftwitter.com%2Foauth%2Frequest_token%26oauth_callback   %3Doob%26oauth_consumer_key   %3D11111111111111111111112222222222222%26oauth_nonce   %3DO3cHsSXrfnzT%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp   %3D1275928008%26oauth_version%3D1.0

消费者秘密:(为安全而删除)

  

11111111111111111111112222222222222&安培;

签名:

  

R3eHMuQ04F37 + xPJSIsoo0aMzc8

发布数据:(为了安全而删除了用户密钥)

  

oauth_callback = oob& oauth_consumer_key = 11111111111111111111112222222222222& oauth_signature_method = HMAC-SHA1& oauth_signature = pjDh8jkp89ThBtzzB9dQmxQfcg& oauth_timestamp = 1275928413& oauth_nonce = qyq3Jhn8rtTZ& oauth_version = 1.0

我已经检查过我的设备上的时钟是正确的,因为这是我能找到的唯一真正的结果:( nonce是唯一的并且每次运行时都会生成... 不幸的是我现在不知道在哪里看。我看不出任何明显的东西。我已经重写了整个请求两次 - 一次使用oauth.js库,一次完全手动,但在两种情况下它都会失败并出现相同的错误!

有什么建议吗?

干杯

2 个答案:

答案 0 :(得分:0)

也许与this question相同 - 它链接到Twitter上的讨论:显然客户端javascript与oob是不允许的!?!?

答案 1 :(得分:0)

您的签名看起来不对,应始终以=结尾。以下是有效的示例:"" YEBbMFDYmp6DvZ3qW1aCx8q7kTc ="。你的基本字符串看起来正确,所以我认为你的签名密钥出错了。

在C#中,我是如何构建我的签名密钥的,

  

string signatureKey = Uri.EscapeDataString(consumer_secret)+"&";

     

var hmacsha1 = new HMACSHA1(new ASCIIEncoding()。GetBytes(signatureKey));

     

string signatureString = Convert.ToBase64String(     hmacsha1.ComputeHash(         new ASCIIEncoding()。GetBytes(signatureBaseString)));

     

string oauth_signature = signatureString;

有关此流程的更多信息:https://www.dinochiesa.net/?p=17