2016-09-06 80 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%)的情况下,这是错误的。

相关问题