0

我正在尝试从他们的 oauth api 获取 Twitter 访问令牌。我使用的插件是这个https://code.google.com/p/oauth/source/browse/#svn%2Fcode%2Fjavascript。到目前为止,我只收到“401 无法验证签名和令牌”。

奇怪的是,即使我设置了 type:'POST',我的 ajax 调用也变成了 'GET' 请求。似乎 jquery 正在将类型从 POST 更改为 GET。我不知道为什么会这样。我在我的 Mac 上运行它。感谢您的帮助/提示/建议/建议。谢谢!

$(函数(){

    函数 myCallback(resp) {
    控制台.log(resp);
    }
    var TwitterAPI;

    TwitterAPI = (函数() {
    var consumer_key = null;
    var consumer_secret = null;

    函数 TwitterAPI(cons_key, cons_secret) {
        this.consumer_key = cons_key;
        this.consumer_secret = cons_secret;
    }

    TwitterAPI.prototype._url = 函数(数据){
            if (typeof data == 'array') {
        return array_map([ // TODO
            这个,'_url'],数据);
            } else if ((/boolean|number|string/).test(typeof data)) {
        return encodeURIComponent(data).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\ )/g, '%29').replace(/\*/g, '%2A');
            } 别的 {
        返回 '​​';
            }
    }

    TwitterAPI.prototype.myCallback = function(resp) {
        控制台.log(resp);
    }

    TwitterAPI.prototype.getRequestToken = function() {
        var 访问器 = {
        consumerSecret: this.consumer_secret, //this.consumer.consumerSecret,
        令牌秘密:''
        };

        变量消息 = {
        方法:“POST”,
        行动:“https://api.twitter.com/oauth/request_token”,
        参数: {
            oauth_signature_method:“HMAC-SHA1”,
            oauth_consumer_key: this.consumer_key, //this.consumer.consumerKey
            oauth_callback: this._url("http://127.0.0.1/foobar/libs/oauth/wtf.html"),
        }
        };
        OAuth.setTimestampAndNonce(消息);
        OAuth.SignatureMethod.sign(消息,访问者);
        var target = OAuth.addToURL(message.action, message.parameters);
        message.parameters.oauth_signature = this._url(message.parameters.oauth_signature);

        console.log(message.parameters);

        $.ajax("https://api.twitter.com/oauth/request_token",
           { 网址:“https://api.twitter.com/oauth/request_token”,
               类型:'POST',
               数据类型:'jsonp',
               jsonp: '回调',
               jsonpCallback:“我的回调”,
               数据:消息.参数,
               成功:函数(数据,textResp,xhr){
               控制台.log(数据);
               },
               错误:函数(xhr,文本,错误){
               控制台.log(文本);
               }
           });

    };
    返回推特API;
     })();

     api = 新的 TwitterAPI(密钥,秘密);
     $('button#request').on('click', function(e) {
     e.stopPropagation();
     api.getRequestToken();
     });

4

0 回答 0