如何获得Yelp Fusion API访问令牌?

时间:2016-11-15 05:40:26

标签: javascript json ajax api yelp

我正在使用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"
  }
}

我重读了文档,并说

  

“要获取访问令牌,请对以下端点进行POST调用   使用从前一步获得的客户端ID和秘密。然后得到   来自响应正文的访问令牌。“

我提交了这个

https://api.yelp.com/oauth2/token?client_id=ID&client_secret= SECRET

我得到了同样的错误。

我错过了什么?

提前谢谢

2 个答案:

答案 0 :(得分:1)

您有三个问题导致您收到错误请求

  1. 参数值中有空格

    ?grant_type= OAuth2
    
  2. 您使用的是错误的grant_type。在文档页面上,他们指定仅支持client_credentials,这意味着您必须将其用作值

      

    grant_type string要使用的OAuth2授权类型。   现在,只支持client_credentials。

  3. 您使用的是错误的请求方法,它必须是POST而不是GET请求

      

    这些参数应该在application / x-www-form-urlencoded中发送    POST 电话中的格式。

    请注意,https://api.yelp.com/oauth2/token?client_id=ID&client_secret=SECRET仍然将您的参数作为GET参数发送,因为它们位于url查询字符串中。您必须将参数作为POST字段传递,并且这样做的语法因您使用的服务器端脚本语言而异。

  4. 此外,您的请求需要在服务器端完成,因为/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;
    }
    

答案 1 :(得分:1)

我使用POSTMAN获取所需的数据,你可以在这里下载 -  https://www.getpostman.com/

要获取您的访问令牌 ,参数应位于请求正文 中,而不是请求网址。

在POSTMAN中,您需要提供以下键/值对:

grant_type:支持client_credentials client_id:您使用Yelp的应用的客户端ID client_secret:您使用Yelp进行应用的客户端密码。

要执行此操作,请在Body中输入它们。同时点击 x-www-form-urlencoded 单选按钮。
请参见下面的屏幕截图链接:
How to configure POSTMAN to get your Yelp Access Token

然后,您可以使用 RapidAPI Yelp API 来测试一些端点和参数。