我正在尝试使用AngularJS调用Yelp API,但我遇到了麻烦.我一直收到400坏请求,我不知道为什么.
Yelp API文档:
http://www.yelp.com/developers/documentation/v2/authentication http://www.yelp.com/developers/documentation/v2/search_api
包含Yelp API生成密钥的页面:
http://gyazo.com/fa918329eb0cde18a5db242d1d0b0b0e
这是我的代码执行调用的片段:
function randomString(length, chars) { var result = ''; for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))]; return result; } app.factory("MyYelpAPI", function($http) { return { "retrieveYelp": function(name, callback) { $http.jsonp("http://api.yelp.com/v2/search?term=food&location=San+Francisco&callback=JSON_CALLBACK", { params: { oauth_consumer_key: /* Consumer Key */, oauth_token: /* Token */, oauth_signature_method: "hmac-sha1", oauth_signature: /* Token Secret */, oauth_timestamp: new Date().getTime(), oauth_nonce: randomString(32, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') } } ).success(callback); } } });
Kostya Shkry.. 7
Yelp API返回您可以在响应正文中找到的非常有用的错误消息.我已经做了3个步骤来提出请求:
将"hmac-sha1"更改为"HMAC-SHA1".文档说hmac-sha1但它错了.
oauth_signature与Token Secret不同.您需要分别为每个请求生成oauth_signature.我使用这个库https://github.com/bettiolo/oauth-signature-js
AngularJS将硬编码的回调参数发送给服务器,因此我们也需要在参数列表中对其进行硬编码.否则我们的签名不正确.
我的代码:
-
{{business.name}}