Yelp API,OAuth;无效签名.需要签名基字符串
Yelp API, OAuth; Invalid signature. Expected signature base string
注意:我已经查看了当我在谷歌中输入错误时返回的谷歌搜索结果前两页上的所有帖子,但我仍然有这个问题。似乎没有太多关于JavaScriptOAuth的报道,因为大多数OAuth业务都发生在后端。
我正在尝试向Yelp电话搜索API发出AJAX请求。我正在使用Marco Bettiolo的JavaScriptOAuth库。我相信我已经让OAuth库工作了,但由于某种原因,当我尝试进行调用时,返回的JSON表示"无效签名"错误。继续查看我的实时项目,并亲自查看错误。这是我在GitHub上的项目。如果你想自己重现错误,请转到我的实时项目,打开devtools控制台,点击一个健身房,弹出一个信息窗口,然后点击上面写着"点击此处查看照片"的地方。一旦你点击,应用程序将启动AJAX请求,并密切关注控制台,因为你会看到错误显示出来。
非常感谢您的帮助!
这是相关代码。我已经在每个infoWindow中的照片链接的onclick处理程序中放置了与AJAX相关的代码。
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);
};
在jQuery ajax设置中,生成签名时还需要指定回调名称以匹配回调参数。否则,jQuery只会选择一个随机名称,导致签名无效。
尝试将其添加到您的设置中:
jsonpCallback: 'cb'
希望这能有所帮助。
相关文章:
- 从字符串末尾删除空白无效
- JSON.stringify抛出RangeError:大型对象的字符串长度无效
- Yelp API,OAuth;无效签名.需要签名基字符串
- 无效的非字符串/缓冲区块Node.js
- 未捕获错误:不变冲突:元素类型无效:应为字符串
- base64字符串使用Node.JS被写为无效图像
- 在实现基本Sharethis代码时指定了无效或非法的字符串
- Firefox 中的日期无效,在 JavaScript 中将字符串转换为日期(mm-dd-yyyy)
- 在 java 脚本中将无效的 JSON 字符串解析为 JSON2
- 谷歌地图:- 无效值错误:设置图标:不是字符串;并且没有网址属性;并且没有路径属性
- 无效的 JSON 字符串谷歌可视化图表
- 在引用错误中将字符串放在一起:左侧的赋值无效
- 未终止的字符串文本/无效或意外的令牌
- WebSocket 语法错误:指定了无效或非法的字符串
- Jquery或JS:如何检查字符串中的无效字符
- 为什么这是谷歌图表的无效JSON字符串
- 为什么字符串搜索对某些字符串有效而对其他字符串无效
- 为什么数组中的数字有效,而数组中的字符串无效
- 解码图像Base64字符串无效
- ASP.Net-Json字符串无效