2016-09-25 95 views
5

我正在构建一个cordova移动应用程序并尝试使用auth0锁定API。我在刷新令牌时遇到问题。我可以retreive刷新令牌在authResult,但无法弄清楚如何实际刷新id_token(我想我可以写calsl自己的REST)在auth0锁定中,如何刷新id_token?

在V9的文档,似乎曾经有一个方法:https://auth0.com/docs/libraries/lock/v9/using-a-refresh-token

lock.getClient().refreshToken(refresh_token, function (err, delegationResult) { 
    // Get here the new JWT via delegationResult.id_token 
}); 

然而,在锁定V10看来这个方法不存在任何更多:https://auth0.com/docs/libraries/lock/v10/api

谁能告知,如果有一种方法来刷新使用锁定API令牌?

+1

可以初始化Auth0.js的一个实例的'.getClient()'方法将返回其锁定使用Auth0js对象,具有锁我们建议你分别创建一个Auth0.js实例。 – ShrekOverflow

回答

1

首先,你需要或者已包括Auth0的脚本标签在你的HTML:

<script src="https://cdn.auth0.com/js/lock/10.8/lock.min.js"></script> 

或者,如果你从NPM安装,您可以要求Auth0:

var Auth0 = require("auth0-js"); 

在V10中,创建Auth0客户端(与Auth0Lock实例分开)的一个实例,该实例具有功能refreshToken()

var auth0 = new Auth0({clientID: YOUR_CLIENT_ID, domain: YOUR_AUTH0_DOMAIN}); 
... 
auth0.refreshToken(refresh_token_here, (err, resp) => { 
    // resp: {expires_in: 36000, id_token: "id_token here", token_type: "Bearer"} 
} 

同样也可以通过使用getDelegationToken()功能来实现:

auth0.getDelegationToken({ 
    client_id: YOUR_CLIENT_ID, 
    grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer", 
    refresh_token: refresh_token_here, 
    scope: "openid", 
    api_type: "auth0" 
    }, (err, resp) => { 
    // resp: {expires_in: 36000, id_token: "id_token here", token_type: "Bearer"} 
    }); 
+1

如果您显示如何单独导入Auth0将会很有帮助。 – Seiyria

+0

如何获得'refresh_token'的值? –

+0

@KeesdeKooter要获得刷新标记,需要在启动身份验证请求时包含'offline_access'作用域。该响应将包含一个refresh_token值。 Auth0的文档覆盖了[这里](https://auth0.com/docs/tokens/refresh-token/current)。 – Andrew

相关问题