【问题标题】:Accessing the Twitter API - authenticating and backbone models访问 Twitter API - 身份验证和主干模型
【发布时间】:2015-01-09 14:50:07
【问题描述】:

我正在尝试学习 Backbone 以及 Twitter API,但遇到了一些问题。

首先,到目前为止,我只能生成一个访问令牌,所以我完成了 OAuth 的一部分,但是在发出获取推文的请求时遇到了麻烦。

我正在使用我在网上找到的一些代码来帮助我入门 这是一个集合:

var Twitter = new Backbone.Model({
    api: api,
    token: tokenToUse,
    debug: false
});
// define a collection
Twitter.Collection = Collection.extend({

    initialize: function(models, options){

        options = options || {};
        _.extend(this.options, options);

        return Collection.prototype.initialize.apply( arguments );
    },

    sync : function( method, model, options ) {

        options.dataType = 'jsonp';

        return Backbone.sync( method, model, options );

    }
});

然后我定义一个搜索集合

Twitter.Collections.Search = Twitter.Collection.extend({
    model: Backbone.API.Twitter.Models.Tweet, // this is defined elsewhere

    url: function(){ return "https://api.twitter.com/1.1/search/tweets.json?q="+ encodeURIComponent(this.options.query) + "result_type=mixed&count=100"; },

    options: {
        query : "",
        num : 10
    },

    parse: function( data ){
        if( Twitter.get("debug") )
            console.log("Twitter.Collections.Search: ", data );
        return data.results;
    },

    initialize: function(query){
        this.options.query = query;
    }

});

我遇到的问题是 Twitter API 需要身份验证,我需要添加授权标头......现在的问题是如何做到这一点?我不确定在哪里设置标题以使其正常工作。

API 文档非常庞大,需要先生成大量数据,事实证明设置 OAuth 非常痛苦。

是否有某个 JavaScript 库在某处进行了此设置?

这些是来自我的控制台的请求标头:

请求网址:https://api.twitter.com/1.1/search/tweets.json?q=testresult_type=mixed&count=100&callback=jQuery19100829295557923615_1420770637354&_=1420770637355
请求方法:GET
状态码:400 错误请求
请求标头
:host:api.twitter.com
:method:GET
:path:/1.1/search/tweets.json?q=testresult_type=mixed&count=100&callback=jQuery19100829295557923615_1420770637354&_=1420770637355
:scheme:https
:version:HTTP/1.1
接受:/
接受编码:gzip、deflate、sdch
接受语言:en-US,en;q=0.8
推荐人:someSite
用户代理:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36

【问题讨论】:

    标签: javascript backbone.js twitter oauth


    【解决方案1】:

    不要在 url 方法中构造查询,而是尝试在 fetch 调用中分配它以及额外的标头

    Collection.extend({
        sync: function (method, model, options) {
             options.dataType = 'jsonp';
             options.headers = {
                "auth-key": "c12a9e06-****-443e-bb2d-5220c70f****"
            }
            return Backbone.sync( method, model, options );
        }
    });
    
    model.fetch({
        data: {
            q: "whatever",
            result_type: 'mixed',
            count: 100
        }
    })
    

    【讨论】:

      猜你喜欢
      • 2015-03-28
      • 2013-07-21
      • 2023-03-27
      • 2015-11-09
      • 2013-06-16
      • 2012-10-19
      • 2018-07-07
      • 2011-04-25
      相关资源
      最近更新 更多