我正在尝试学习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错误请求
请求标题
:主持人:api.twitter.com
:方法:GET
:路径:/1.1/search/tweets.json Q = testresult_type =混合&安培;计数= 100安培;回调= jQuery19100829295557923615_1420770637354&安培; _ = 1420770637355
:方案:HTTPS
:版本:HTTP / 1.1
接受: /
accept-encoding:gzip,deflate,sdch
接受语言:EN-US,EN; Q = 0.8
引用者:someSite
user-agent:Mozilla / 5.0(Windows NT 6.3; WOW64)AppleWebKit / 537.36(KHTML,类似Gecko)Chrome / 39.0.2171.95 Safari / 537.36
答案 0 :(得分: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
}
})