检索Auth0管理APIv2令牌

时间:2017-08-22 22:53:10

标签: cors auth0

正如Auth0 documentation中所述,我试图通过使用来自我的Ember App的jQuery发出POST请求来检索管理api令牌:

getToken() {
  let settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://brittshroyer.auth0.com/oauth/token",
    "method": "POST",
    "headers": {
      "content-type": "application/json"
    },
    "processData": false,
    "data": "{grant_type:client_credentials, 
              client_id: 123, 
              client_secret: fakesecret123, 
              audience: https://brittshroyer.auth0.com/api/v2/}"
  }
  $.ajax(settings).done(function (response) {
    return console.log('RESPONSE', response);
  });
}

按照说明,我创建并初始化了一个非交互式客户端'我已列入白名单' localhost:4200' (因为那是我运行我的Ember App的地方)在Auth0中我的客户端配置的Allowed Origins(CORS)部分。仍然,我在发出POST请求时遇到以下CORS错误:enter image description here

我对CORS非常熟悉,但显然不够熟悉。我是否需要在有效负载中添加某个标头? Auth0中是否有配置步骤我遗失了?任何帮助都是极好的。

1 个答案:

答案 0 :(得分:1)

此代码适用于我 - 请使用 TENANT client_id值 client_secret值替换。

<html>

<head>
  <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
    crossorigin="anonymous"></script>
</head>

<body>

<script>


var settings = {
  async: true,
  crossDomain: true,
  url: "https://{{TENANT}}.auth0.com/oauth/token",
  method: "POST",
  headers: {
    "content-type":"application/json"
  },
  "data": "{\"client_id\":\"Z7HtXBOBPXXXXXXXQcJ3Ma\",\"client_secret\":\"FPWb45XXXXXX96U5XmBUZkUXXXXODDJ88NY\",\"audience\":\"https://brittshroyer.auth0.com/oauth/token\",\"grant_type\":\"client_credentials\"}"
}

$.ajax(settings).done(function (response) {
  console.log(response);
});
</script>

</body>

</html>

在Auth0信息中心的客户端(非API)中,请记得添加Allowed Callback URLs(我相信您已经在做)。例如

enter image description here

我认为你的代码出错了,不知怎的,这是JSON格式错误。在上面JSON代码段的data部分中,请注意该值是如何转义的。这类似于在控制板的API部分单击“尝试”按钮时Auth0提供的代码片段。

关于快速测试的注意事项:我安装了npm模块serve,因此只需在temp.html上方命名我的代码段并从同一文件夹中运行serve。然后在http://localhost:5000/temp.html投放。您可以通过刷新页面并在Web浏览器开发人员工具中查看控制台来查看输出。

如果您有任何问题,请告诉我,如果有助于您解决问题,请将此答案标记为正确! :)