2016-09-06 84 views
0

我試圖按照一系列步驟的列表中https://auth0.com/docs/what-to-do-once-the-user-is-logged-in/calling-an-external-idp-api但儘管我最大的努力我無法得到我如下時,出現了錯誤的訪問令牌:呼叫身份提供API後Auth0認證

POST https://r***s.eu.auth0.com/oauth/token 401 (Unauthorized) 

當我嘗試獲取訪問令牌。

我的代碼如下:

var data = { 
    client_id : '****', 
    client_secret : '****', 
    audience : 'https://r****.eu.auth0.com/api/v2/', 
    grant_type : 'client_credentials' 
}; 

var config = { 
      json: true, 
      headers : { 
       'Content-Type': 'application/json;' 
}; 
     } 

$http.post('https://r***.eu.auth0.com/oauth/token',data, config).then ( 
    function(response) { console.log(response); } 
     ); 
+0

您收到的'401'錯誤似乎表明請求的有效內容(正文)包含「client_id」和「client_secret」的不正確或缺失值。 沒有提供實際的'client_secret'(這是:)祕密),你能給出更多關於你如何調用'/ oauth/token'終點的信息嗎? –

+0

根據Auth0網站指南中的操作列表,我創建了一個「非交互式」應用程序,並在我的有效負載中使用該應用程序的客戶端ID和祕密。 – Raghu

回答

0

的問題是,你做你POST請求時設置了不正確的Content-Type

正確的內容類型JSON請求如下:application/json

你在這是造成服務器發出401響應末端附加一個額外的;字符。

此外,該代碼片段似乎來自AngularJS應用程序。如果是這種情況,由於CORS限制,除非應用程序域在客戶機設置(Auth0儀表板)中的允許來源(CORS)列表中白名單列出,否則還有兩個額外問題,您將無法執行請求無論如何。這是第一個問題,但不是最大的問題...... 如果您通過將域添加到白名單來解決此問題,則您現在有一個客戶端標識符和祕密存儲在客戶端應用程序上,這意味着任何人都可以訪問它只是通過查看代碼。 在幾乎所有(大概99.9%)的情況下,這是錯誤的。

相關問題