2
我正在嘗試爲本地項目使用骨幹網,這個項目永遠不會看到真正的Web服務器,並且通過AJAX與Yelp API進行交互。 Yelp API要求我們使用oauth進行身份驗證,並給出sample code我已經建立了自己的代碼。當我使用示例代碼時,我不會遇到Cross-Origin或其他任何問題。但是,當我關閉瀏覽器安全選項時,我只收到400個錯誤響應。Backbone覆蓋Oauth的collection.sync
我曾試圖覆蓋如下所述提取方法:
fetch: function(options) {
var accessor, message, parameterMap, parameters;
if (!options) {
options = {};
}
accessor = {
consumerSecret: LOAF.auth.conserumerSecret,
tokenSecret: LOAF.auth.accessTokenSecret
};
parameters = [];
parameters.push(['oauth_consumer_key', LOAF.auth.consumerKey]);
parameters.push(['oauth_consumer_secret', LOAF.auth.consumerSecret]);
parameters.push(['oauth_token', LOAF.auth.accessToken]);
parameters.push(['oauth_signature_method', 'HMAC-SHA1']);
parameters.push(['location', "New York City"]);
message = {
'action': this.url,
'method': 'GET',
'parameters': parameters
};
OAuth.setTimestampAndNonce(message);
OAuth.SignatureMethod.sign(message, accessor);
parameterMap = OAuth.getParameterMap(message.parameters);
parameterMap.oauth_signature = OAuth.percentEncode(parameterMap.oauth_signature);
options.url = this.url;
options.data = parameterMap;
options.cache = true;
options.dataType = 'json';
options.success = this.onResponse;
console.log("Attempting");
console.log(options);
return Backbone.Model.prototype.fetch.apply(this, options);
},
但這產生400響應。我有一種感覺,因爲我沒有正確地進行AJAX調用,因爲主幹對我來說大部分都是這樣做的,可能會覆蓋我設置的一些選項。我認爲我需要做的是覆蓋此集合的「同步」方法,而不是僅僅處理OAuth並自己解析響應。有一個更好的方法嗎?