注意:我查看了当我向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,然后点击它所说的位置,"点击这里查看照片及#34。一旦你点击它,应用程序将启动AJAX请求并密切关注控制台,因为你会看到错误显示。
非常感谢任何帮助!
以下是相关代码。我已将与AJAX相关的代码放在onclick处理程序中,用于每个infoWindow中的照片链接。
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);
};
答案 0 :(得分:0)
在jQuery ajax设置中,您还需要在生成签名时指定回调名称以匹配您的回调参数。否则,jQuery将只选择一个导致无效签名的随机名称。
尝试将此添加到您的设置中:
jsonpCallback: 'cb'
希望这有帮助。