正如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错误:
我对CORS非常熟悉,但显然不够熟悉。我是否需要在有效负载中添加某个标头? Auth0中是否有配置步骤我遗失了?任何帮助都是极好的。
答案 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
(我相信您已经在做)。例如
我认为你的代码出错了,不知怎的,这是JSON格式错误。在上面JSON代码段的data
部分中,请注意该值是如何转义的。这类似于在控制板的API部分单击“尝试”按钮时Auth0提供的代码片段。
关于快速测试的注意事项:我安装了npm模块serve,因此只需在temp.html
上方命名我的代码段并从同一文件夹中运行serve
。然后在http://localhost:5000/temp.html
投放。您可以通过刷新页面并在Web浏览器开发人员工具中查看控制台来查看输出。
如果您有任何问题,请告诉我,如果有助于您解决问题,请将此答案标记为正确! :)