【问题标题】:Retrieving Auth0 Management APIv2 Token检索 Auth0 管理 APIv2 令牌
【发布时间】:2019-12-24 19:24:05
【问题描述】:

正如Auth0 documentation 中所述,我正在尝试通过使用我的 Ember 应用程序中的 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);
  });
}

按照指示,我创建并初始化了一个“非交互式客户端”,并在配置的“允许的来源”(CORS) 部分将“localhost:4200”列入了白名单(因为这是我运行 Ember 应用程序的地方)我的客户在 Auth0 中。不过,我在发出 POST 请求时遇到了以下 CORS 错误:

我对 CORS 相当熟悉,但显然还不够熟悉。我是否需要向有效负载添加某个标头?我缺少 Auth0 中的配置步骤吗?任何帮助都是极好的。

【问题讨论】:

  • “响应的 HTTP 状态码为 400” 似乎是实际问题。 =“错误请求”,这似乎表明您的服务器认为您的请求有一些不是它所期望的内容
  • Britt - 您是否尝试为您自己的 API 检索资源 API 访问令牌?还是管理 API 访问令牌来调用针对 Auth0 API 端点的操作?
  • Britt - 您在下面看到我的回答是否完全解决了您的问题?如果您觉得有帮助,请标记为正确答案。
  • Britt - 有什么更新吗?发布的答案有帮助吗?

标签: auth0


【解决方案1】:

此代码适用于我 - 请替换为您的 TENANTclient_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(我相信你已经在这样做了)。例如。

我认为你的代码出了问题,不知何故它是格式错误的 JSON。在上面 JSON sn-p 的 data 部分,请注意值是如何转义的。这类似于单击仪表板 API 部分中的 Try 按钮时提供的代码 sn-p Auth0。

快速测试注意事项: 我安装了 npm 模块 serve,所以只需将我的 sn-p 命名为 temp.html 并从同一文件夹运行 serve。然后在http://localhost:5000/temp.html 提供服务。您可以通过刷新页面并在 Web 浏览器开发人员工具中查看控制台来查看输出。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-14
    • 2017-10-18
    • 2018-03-08
    • 2019-06-18
    • 2020-03-29
    • 1970-01-01
    • 2019-12-14
    • 2020-12-17
    相关资源
    最近更新 更多