2017-08-22 27 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瀏覽器開發人員工具中查看控制檯來查看輸出。

讓我知道如果你有任何問題,並請標記這個答案是正確的,如果它可以幫助你解決你的問題! :)