Javascript 如何获取Yelp Fusion API访问令牌?

Javascript 如何获取Yelp Fusion API访问令牌?,javascript,json,ajax,api,yelp,Javascript,Json,Ajax,Api,Yelp,我正在使用Yelp的融合API 所有文档都在这里,看起来很简单,但似乎仍然不起作用 这是我要的代币 https://api.yelp.com/oauth2/token?grant_type= OAuth2&client_secret= SECRET&client_id=ID 我收到了这个答复 { "error": { "description": "Bad Request", "code": "CLIENT_ERROR" } } 我重新阅读了文档,它

我正在使用Yelp的融合API

所有文档都在这里,看起来很简单,但似乎仍然不起作用

这是我要的代币

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
我也犯了同样的错误

我错过了什么


提前感谢

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

  • 参数值中有空格

    ?grant_type= OAuth2
    
  • 您使用了错误的
    授权类型
    。在文档页面上,它们指定只支持
    客户端\u凭据
    ,这意味着您必须将其用作值

    grant_type字符串要使用的OAuth2授权类型。 目前,仅支持客户端\u凭据

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

    这些参数应在application/x-www-form-urlencoded中发送 在POST调用中设置格式

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

  • 此外,您的请求需要在服务器端完成,因为
    /oauth2/token
    端点不发送
    访问控制允许来源
    头,这意味着您无法使用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;
    }
    

    我用邮递员来获取所需的数据,你可以在这里下载-

    要获取访问令牌,参数应位于请求正文中,而不是请求URL中


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

    授权类型:支持客户端凭据。
    客户端id:使用Yelp的应用程序的客户端id。
    客户端密码:使用Yelp的应用程序的客户端密码

    要执行此操作,请将它们输入到身体中。同时单击x-www-form-urlencoded单选按钮
    请参阅下面的屏幕截图链接:


    然后,您可以在RapidAPI Yelp API上进行测试,以测试一些端点和参数