Javascript Chrome扩展插件错误(未经授权)

Javascript Chrome扩展插件错误(未经授权),javascript,oauth,google-chrome-extension,Javascript,Oauth,Google Chrome Extension,我正在使用JS访问rdio插件。我将以下内容用于Oauth。 我能够获得签名令牌等。然而,当我试图在发送签名请求时,我收到401,未授权错误 X-Mashery-Error-Code:错误\u 401\u无效\u签名 X-mashury-Responder:mashury-web4.LAX 这就是我试图发送的内容: var url = 'http://api.rdio.com/1/'; var request = { 'method': 'POST', 'headers': {

我正在使用JS访问rdio插件。我将以下内容用于Oauth。 我能够获得签名令牌等。然而,当我试图在发送签名请求时,我收到401,未授权错误

X-Mashery-Error-Code:错误\u 401\u无效\u签名 X-mashury-Responder:mashury-web4.LAX

这就是我试图发送的内容:

 var url = 'http://api.rdio.com/1/';
 var request = {
   'method': 'POST',
   'headers': {
     'Content-Type': 'application/x-www-form-urlencoded'
   },    
   'parameters': {
     'alt': 'json',
     'method':'currentUser'
   },
   'body': 'Data to send'
 };

 bgPage.oauth.sendSignedRequest(url, mycallback, request);  
我在控制台中收到以下错误。 *我只是想模仿这里提到的。这是一个Oauth图书馆(http://code.google.com/chrome/extensions/tut_oauth.html)从谷歌,使Chrome扩展开发容易。 他们有一个Oauth示例代码来获取您的文档列表等。
我想我无法通过向rdio API发送POST请求。它给出了一个未经授权的错误。*

检查您计算机上的时区、日期和时间。如果其中任何一个错误,OAuth将失败。

我们在相同的服务(rdio)和方法(“currentUser”)中发现了类似的问题

最终起作用的是: (1) 确保文章正文中有method=currentUser;从上面的curl输出中,我不确定是否是这种情况

实际上,这是解决问题的一点: (2) 我们还必须将方法名添加到签名本身

仅供参考,我们使用了该库:


但是,正如您所看到的,棘手的部分是找出如何在创建签名的库中种子方法。如果签名中没有'method=currentUser',我们就遇到了相同的错误情况。

OAuth是出了名的难以调试的,你能在应用程序上查看签名与代码输出的内容的比较吗。谢谢,这将对调试有很大帮助。这与OAuth有什么关系?OAuth使用“nonces”,要使用一次且仅使用一次的数字。因此,提供者需要跟踪大量的nonce。为了限制提供程序需要记住的nonce的数量,OAuth nonce仅在一定时间内有效,在此之后,提供程序可以忘记它们。有关更多信息,请访问:
Request URL:http://api.rdio.com/1/?alt=json&method=currentUser&oauth_consumer_key=yv8ehzehdv55**********&oauth_nonce=******&oauth_signature=**********&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1305190893&oauth_token=us6myp99p4qc86umea9p8fp*****************
Request Method:POST
Status Code:401 Unauthorized
Request Headers
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:12
Content-Type:application/x-www-form-urlencoded
Cookie:__qca=P0-158278476-1296771701175; r=eyJfdSI6IDE5MjY1LCAiX2UiOiAzMTU1NjkyNn0.SvN8xd7rIuLzTp7hxqi4eJEdvu8; __utmz=225830489.1305153361.198.18.utmcsr=rdioquiz.ianloic.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utma=225830489.281668250.1296676147.1305184513.1305187119.201; __utmc=225830489
Host:api.rdio.com
Origin:chrome-extension://oiojbkkpmcgmpnjkhjmaggajckamjkap
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24
Query String Parameters
alt:json
method:currentUser
oauth_consumer_key:yv8ehzehdv55pbb74ss9dt23
oauth_nonce:BQF0x
oauth_signature:KttF************tRO 8PL yjPF2Ktk=
oauth_signature_method:HMAC-SHA1
oauth_timestamp:1305190893
oauth_token:us6myp99p4qc86umea9p8fphbgq4dxdd76txvyn***********
Form Data
Data to send:
Response Headers
Accept-Ranges:bytes
Content-Length:30
Content-Type:text/xml
Date:Thu, 12 May 2011 09:01:33 GMT
Server:Mashery Proxy
X-Mashery-Error-Code:ERR_401_INVALID_SIGNATURE
X-Mashery-Responder:mashery-web4.LAX