2017-08-22 26 views
0

正如Auth0 documentation概括,我试图通过使使用jQuery从我的灰烬应用POST请求检索管理API令牌:检索Auth0管理APIv2令牌

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); 
    }); 
} 

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

我对CORS非常熟悉,但显然不够熟悉。我是否需要为有效载荷添加某个标题? Auth0中是否存在配置步骤?我错过了吗?任何帮助都是极好的。

+0

*“响应有HTTP状态代码400”*似乎是实际的问题。 =“错误的请求”,这似乎表明你的服务器决定有一些关于你的请求的东西,这不是它所期望的 – sideshowbarker

+0

Britt - 你是否试图为你自己的API检索资源API访问令牌?还是一个管理API访问令牌来调用针对Auth0 API端点的操作? – arcseldon

+0

布里特 - 你是否看到我的答案在下面完全解决你的问题?如果您发现它有帮助,请您可以标记为正确的答案。 – arcseldon

回答

0

此代码对我的作品 - 请你只用你的租户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部分中的Try按钮时,这与代码片段Auth0提供的类似。

注意在快速测试:我有NPM模块安装serve,所以只是叫我的片段上方temp.html,并从同一文件夹中跑serve。然后送达http://localhost:5000/temp.html。您可以通过刷新页面并在Web浏览器开发人员工具中查看控制台来查看输出。

让我知道如果你有任何问题,并请标记这个答案是正确的,如果它可以帮助你解决你的问题! :)