2016-12-14 122 views
0

我使用Auth0 Lock与google-oauth2连接,我需要获得refresh_token,因为我需要在用户离线时从服务器端进行API调用。Auth0 Lock - Google oauth2无法获取refresh_token

我按照他们的指导,但它不工作,refreshToken总是undefined

使用http://cdn.auth0.com/js/lock/10.7.2/lock.min.js

this.lock = new Auth0Lock('...', 'xxx.eu.auth0.com', { 
    initialScreen:'login', 
    allowedConnections: ['google-oauth2'], 
    allowSignUp: false, 
    auth: { 
    redirect: false, 
    responseType: "token", 
    params: { 
     'access_type': 'offline', 
     'approval_prompt': 'force', 
    }, 
    }, 
    autoclose: true 
}); 

也试图与这里params 'approval_prompt': 'force''prompt': 'select_account consent'

说明:https://github.com/auth0/rules/blob/master/rules/google-refresh-token.md

回答

2

这条规则是错误的。 IdP access_tokens可通过管理API获得。看到这个端点:https://auth0.com/docs/api/management/v2#!/Users/get_users_by_id

需要一个特殊的范围(read:user_idp_tokens)。

这是因为的IdP令牌是敏感的工件,所以Auth0提出了额外的安全层,以获得它们。

您当然可以从规则中调用API,但我们可能会建议您不要这样做,而是让您的后端代表您的(前端)应用程序行事。

+0

我不知道我理解正确。 我有一个SPA应用程序,我想连接到Node中的后端。 在SPA我使用的锁,你告诉我,我需要使用管理API(我想在服务器上),但我不完全明白,我怎么就能获得'refresh_token'。 Auth0是否将refresh_token保存在某个地方以供我在之后进行检索? – mtt

+0

的refresh_token(谷歌一个,这是)被authentoication后取出,并作为在Auth0用户配置文件的一部分被存储。要检索它,你可以使用我上面写到的端点。您可以通过登录然后使用API​​浏览器轻松地看到这一点。 IdP(Google)令牌(包括access_token和refresh_token)将位于Identities数据结构下。 –

+0

现在很清楚,谢谢Eugenio!并感谢伟大的产品是Auth0! – mtt