Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Javascript OAuth请求令牌错误:flickr中的401_Javascript_Angularjs_Oauth_Flickr - Fatal编程技术网

Javascript OAuth请求令牌错误:flickr中的401

Javascript OAuth请求令牌错误:flickr中的401,javascript,angularjs,oauth,flickr,Javascript,Angularjs,Oauth,Flickr,我正在开发一个移动应用程序,用于将图片上传到flickr。但我甚至无法成功完成第一步,即请求令牌。我在基本url上签名,并将签名参数添加到代码中。我使用了http://oauth.googlecode.com/svn/code/javascript/oauth.js和http://oauth.googlecode.com/svn/code/javascript/sha1.js除AngularJS之外的其他库。 发送了GET请求,如下所示 $scope.test=function(){

我正在开发一个移动应用程序,用于将图片上传到flickr。但我甚至无法成功完成第一步,即请求令牌。我在基本url上签名,并将签名参数添加到代码中。我使用了
http://oauth.googlecode.com/svn/code/javascript/oauth.js
http://oauth.googlecode.com/svn/code/javascript/sha1.js
除AngularJS之外的其他库。 发送了GET请求,如下所示

$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
我在控制台中记录了以下参数

签名字符串:

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
我在浏览器中输入了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

此javascript库可能会帮助您了解OAuth的内容:

它支持客户端和node.js


干杯

我将回调url用作flicker.com本身。这有什么问题吗?我知道答案了。我会在一两天内把它作为答案发布。如果有人需要紧急帮助,请发表评论。答案很简单。我的消费者秘密是错误的。另一件事是,无法在客户端脚本中执行请求令牌过程。您打算何时发布答案?抱歉,我忘记了此问题的解决方案。它看起来很有希望。在使用OAuth 1.0a时,我一定会尝试一下。