在auth0锁定中,如何刷新id_token?

时间:2016-09-25 23:40:58

标签: auth0

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

在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 个答案:

答案 0 :(得分:1)

首先,您需要在HTML中包含Auth0的脚本标记:

 <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"}
  });