[英]How to get a Yelp Fusion API access token?
我正在使用Yelp的Fusion API。
所有文档都在这里,看起来很简单,但似乎仍然行不通。
https://www.yelp.com/developers/documentation/v3/get_started
这是我要求的令牌。
https://api.yelp.com/oauth2/token?grant_type= OAuth2&client_secret= SECRET&client_id=ID
我收到此回复。
{
"error": {
"description": "Bad Request",
"code": "CLIENT_ERROR"
}
}
我重新阅读了文档,上面写着
“要获取访问令牌,请使用从上一步获得的客户端ID和密码对以下端点进行POST调用。然后从响应正文中获取访问令牌。”
我提交了这个
https://api.yelp.com/oauth2/token?client_id=ID&client_secret= SECRET
我遇到了同样的错误。
我想念什么?
先感谢您
您遇到三个导致您收到错误请求的问题
参数值中有空格
?grant_type= OAuth2
您使用了错误的grant_type
。 在文档页面上,它们指定仅支持client_credentials
,这意味着您必须将其用作值
grant_type字符串要使用的OAuth2授权类型。 目前,仅支持client_credentials。
您使用了错误的请求方法,它必须是POST而不是GET请求
这些参数应在POST调用中以application / x-www-form-urlencoded格式发送。
请注意, https://api.yelp.com/oauth2/token?client_id=ID&client_secret=SECRET
仍将参数作为GET参数发送,就像它们在url查询字符串中一样。 您必须将参数作为POST字段传递,并且这样做的语法在您使用的服务器端脚本语言上有所不同。
另外,您的请求也需要在服务器端完成,因为/oauth2/token
端点不会发送Access-Control-Allow-Origin
标头,这意味着您无法使用ajax请求来获取数据。
因此,如果说您使用的是PHP服务器端,则可以使用CURL来获取令牌
$postData = "grant_type=client_credentials&".
"client_id=YOURCLIENTID&".
"client_secret=SECRET";
$ch = curl_init();
//set the url
curl_setopt($ch,CURLOPT_URL, "https://api.yelp.com/oauth2/token");
//tell curl we are doing a post
curl_setopt($ch,CURLOPT_POST, TRUE);
//set post fields
curl_setopt($ch,CURLOPT_POSTFIELDS, $postData);
//tell curl we want the returned data
curl_setopt($ch,CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
//close connection
curl_close($ch);
if($result){
$data = json_decode($result);
echo "Token: ".$data->access_token;
}
我用邮差获取所需的数据,你可以在这里下载- https://www.getpostman.com/
为了获取您的访问令牌,参数应位于请求正文中 ,而不是请求URL中。
在POSTMAN中,您需要提供以下内容作为键/值对:
grant_type:支持client_credentials。
client_id:使用Yelp的应用的客户端ID。
client_secret:使用Yelp的应用程序的客户端密码。
为此,您将它们输入到“正文”中。 同时点击x-www-form-urlencoded单选按钮。
请参阅下面的屏幕快照链接:
如何配置POSTMAN以获取您的Yelp访问令牌
然后,您可以在RapidAPI Yelp API上进行测试,以测试一些端点和参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.