我正在构建一个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刷新令牌?
答案 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"}
});