【发布时间】:2015-05-23 01:04:15
【问题描述】:
注意:当我在 Google 中输入错误时,我查看了返回的 Google 搜索结果前两页上的所有帖子,但我仍然遇到此问题。似乎没有太多关于 JavaScript OAuth 的报道,因为大多数 OAuth 业务都发生在后端。
我正在尝试向 Yelp Phone Search API 发出 AJAX 请求。我正在使用Marco Bettiolo's JavaScript OAuth library。我相信我已经让 OAuth 库正常工作,但由于某种原因,当我尝试拨打电话时,返回的 JSON 说明“无效签名”错误。继续查看我的live project,并亲自查看错误。这是我的project on GitHub。如果您想自己重现错误,请转到我的live project,打开 devtools 控制台,单击一个健身房,然后弹出一个 infoWindow,然后单击上面写着“单击此处查看照片”的位置。单击该按钮后,应用程序将触发 AJAX 请求并密切关注控制台,因为您会看到错误出现。
非常感谢任何帮助!
这是相关代码。我已将 AJAX 相关代码放置在每个 infoWindow 中的照片链接的 onclick 处理程序中。
photoLink.onclick = function() {
// Modify phone number string so it's ready to be
// put into url for AJAX call to Yelp API
var phoneNumber = place.formatted_phone_number;
var re = /\D/gi;
phoneNumber = phoneNumber.replace(re, '');
var yelpURL = YELP_BASE_URL + phoneNumber;
var parameters = {
oauth_consumer_key: YELP_CONSUMER_KEY,
oauth_token: YELP_TOKEN,
oauth_nonce: generateNonce(),
oauth_timestamp: Math.floor(Date.now()/1000),
oauth_signature_method: 'HMAC-SHA1',
oauth_version : '1.0',
callback: 'cb' // This is crucial to include for jsonp implementation in
// AJAX or else the oauth-signature will be wrong.
};
var encodedSignature = oauthSignature.generate('GET',yelpURL, parameters, YELP_CONSUMER_SECRET, YELP_TOKEN_SECRET);
parameters.oauth_signature = encodedSignature;
var settings = {
url: yelpURL,
data: parameters,
cache: true, // <---- This is crucial to include as well to prevent jQuery from
// adding on a cache-buster parameter "_=23489489749837",
// invalidating our oauth-signature
dataType: 'jsonp',
success: function(results) {
// Do stuff with results
console.log(results);
},
fail: function() {
// Do stuff on fail
console.log('AJAX request has failed :(');
}
};
// Send AJAX request via jQuery library
$.ajax(settings);
};
【问题讨论】:
-
你是怎么解决的?
标签: javascript jquery ajax oauth yelp