Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Twitter、JavaScript&;OAuth:验证OAuth签名和令牌失败_Javascript_Oauth_Twitter - Fatal编程技术网

Twitter、JavaScript&;OAuth:验证OAuth签名和令牌失败

Twitter、JavaScript&;OAuth:验证OAuth签名和令牌失败,javascript,oauth,twitter,Javascript,Oauth,Twitter,我试图使用JavaScript实现OAuth,但是当我向发出请求时,我在响应中得到了上面的消息(“未能验证OAuth签名和令牌”) 据我所知,我在签名库的编码中包含了所有正确的参数: basestring:(为安全起见,已删除使用者密钥) 发布http%3A%2F%2Ftwitter.com%2fouth%2fouth\u请求令牌%26oauth\u回调(&F) %3oob%26oauth\u消费者密钥 %3D1111111111111111222222222%26当前 %3DO3cHsSXrf

我试图使用JavaScript实现OAuth,但是当我向发出请求时,我在响应中得到了上面的消息(“未能验证OAuth签名和令牌”)

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

basestring:(为安全起见,已删除使用者密钥)

发布http%3A%2F%2Ftwitter.com%2fouth%2fouth\u请求令牌%26oauth\u回调(&F) %3oob%26oauth\u消费者密钥 %3D1111111111111111222222222%26当前 %3DO3cHsSXrfnzT%26oauth\u签名\u方法%3DHMAC-SHA1%26oauth\u时间戳 %3D1275928008%26oauth_版本%3D1.0

消费者机密:(为安全起见删除)

111111111111111122222222&

签名:

R3eHMuQ04F37+XPJSISO0AMZC8

Post数据:(为安全起见,已删除使用者密钥)

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

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

有什么建议吗


干杯

可能与-twitter上讨论的链接相同:显然,不允许使用oob的客户端javascript!?!?

您的签名看起来有误,它应该始终以a=结尾。下面是一个有效的例子:“YEBbMFDYmp6DvZ3qW1aCx8q7kTc=”.您的基本字符串看起来正确,因此我认为您的签名密钥出错

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

字符串signatureKey=Uri.EscapeDataString(consumer_secret)+“&”

var hmacsha1=new hmacsha1(new ascienceoding().GetBytes(signatureKey))

string signatureString=Convert.ToBase64String( hmacsha1.ComputeHash( 新的ascienceoding().GetBytes(SignatureBasString))

字符串oauth_签名=signatureString


有关此过程的更多信息:

您是从您的计算机/本地主机还是从实时web服务器进行调试?据我所知,您需要从web服务器进行测试。我正在设备(和webos模拟器)上进行调试