2014-01-08 164 views
2

我正在开发一个将图片上传到flickr的移动应用程序。但我甚至不能做第一步,即成功请求令牌。我签署了基本URL并将签名参数添加到代码中。在AngularJS以外的版本中,我使用了http://oauth.googlecode.com/svn/code/javascript/oauth.jshttp://oauth.googlecode.com/svn/code/javascript/sha1.js库。 按如下方式发送GET请求。OAuth请求令牌错误:401在flickr

$scope.test=function(){ 
     var preURL="http://www.flickr.com/services/oauth/request_token"; 
     var accessor = { 
      consumerSecret: "a3439ab5915a03e4c", 
      tokenSecret : "" 
     }; 
     var message = { 
      method: "GET", 
      action: preURL, 
      parameters: OAuth.decodeForm("oauth_callback=http%3A%2F%2Fwww.flickr.com") 
     }; 
     message.parameters.push(["oauth_version", "1.0"]); 
     message.parameters.push(["oauth_consumer_key", "1cfb4bb9b0e0bec71554e66da9da4582"]); 
     message.parameters.push(["oauth_timestamp", OAuth.timestamp()]); 
     message.parameters.push(["oauth_nonce", OAuth.nonce(11)]); 
     message.parameters.push(["oauth_signature_method", "HMAC-SHA1"]); 


     OAuth.SignatureMethod.sign(message, accessor); 
     console.log("signatureBaseString" + OAuth.SignatureMethod.getBaseString(message)); 
     console.log("signature"   + OAuth.getParameter(message.parameters, "oauth_signature")); 
     var requestTokenURL=OAuth.addToURL(preURL,message.parameters); 
     console.log(requestTokenURL); 
     $http({ 
      method: message.method, 
      url: requestTokenURL 
     }). 
     success(function(data, status, headers, config) { 
      console.log("success"); 
      }). 
     error(function(data, status, headers, config) { 
      console.log("error"); 
      }); 
    } 

错误是发生与下列网络状态:

GET http://www.flickr.com/services/oauth/request_tok...1&oauth_signature=h0pdL6ZzYqGnGsrHbqjwFCIGg2Y%3D 
401 Unauthorized 

我登录控制台以下参数。

signatureBaseString:

GET&http%3A%2F%2Fwww.flickr.com%2Fservices%2Foauth%2Frequest_token&oauth_callback%3Dhttp%253A%252F%252Fwww.google.com%26oauth_consumer_key%3D1cfb4bb9b0e0bec71554e66da9da4582%26oauth_nonce%3DzKxKd3VJxEB%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1389180736%26oauth_version%3D1.0 

签名

h0pdL6ZzYqGnGsrHbqjwFCIGg2Y= 

RequestTokenURL

http://www.flickr.com/services/oauth/request_token?oauth_callback=http%3A%2F%2Fwww.google.com&oauth_version=1.0&oauth_consumer_key=1cfb4bb9b0e0bec71554e66da9da4582&oauth_timestamp=1389180736&oauth_nonce=zKxKd3VJxEB&oauth_signature_method=HMAC-SHA1&oauth_signature=h0pdL6ZzYqGnGsrHbqjwFCIGg2Y%3D 

我确认E d的RequestTokenURL在浏览器中,得到了这样的结果:

oauth_problem=signature_invalid&debug_sbs=GET&http%3A%2F%2Fwww.flickr.com%2Fservices%2Foauth%2Frequest_token&oauth_callback%3Dhttp%253A%252F%252Fwww.google.com%26oauth_consumer_key%3D1cfb4bb9b0e0bec71554e66da9da4582%26oauth_nonce%3D6XctoZTWmaH%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1389181211%26oauth_version%3D1.0 
+0

我使用回调网址作为flicker.com本身。那有什么问题吗? – Foreever

+0

我得到了答案。我会在一两天内将它作为答案发布。请评论是否有人需要紧急帮助。简而言之,答案是。我的消费者秘密是错误的。另一件事是,不可能在客户端脚本中执行请求令牌进程。 – Foreever

+0

你什么时候发布你的答案? – dumbledad

回答

1

这个JavaScript库可以帮助您的OAuth的东西:oauth-1.0a

它同时支持客户端和Node.js的

干杯

+1

看起来很有希望。使用OAuth 1.0a时,我一定会尝试一下。 – Foreever