【发布时间】:2019-04-01 06:26:21
【问题描述】:
我有一个老式的 angularJs 应用程序,它有两个页面。在这两个页面上,我都包含了 auth0 锁定脚本。
<script src="https://cdn.auth0.com/js/lock/11.9.0/lock.min.js"></script>
在这两个页面中,一个具有以下 js,指定了一个 auth0 锁以允许用户登录:
new Auth0LockPasswordless(configuration.id,configuration.domain,
{
allowedConnections: ['email'],
passwordlessMethod: "link",
auth: {
redirectUrl: configuration.redirectUrl,
responseType: 'token id_token',
params: {
scope: 'openid profile email offline_access'
}
}
}).show();
其他页面负责在他们单击电子邮件中的链接后进行回叫。
var lock = new Auth0LockPasswordless(configuration.id, configuration.domain);
lock.on('authorization_error',
function(authResult) {
console.log("DEBUG::AUTHRESULT::", authResult);
});
lock.on('authenticated',
function(authResult) {
console.log("DEBUG::AUTHRESULT::", authResult);
});
现在我在请求的范围内设置了offline_access,并且在我的本地环境中,在进行身份验证时被提示提供额外的权限(所以它通过了)。但是,当我检查来自lock.on('authenticated', function(authResult).. 的日志时,refreshToken 始终为空。
网络上有一些相互矛盾的文档,其中包含关于 lock 将返回刷新令牌和不会返回刷新令牌的建议。是否有人能够确认此代码是否应生成有效的 refreshToken?
【问题讨论】:
-
你好 Lucas,看起来即使使用无密码身份验证也可以获得刷新令牌。我做了一些搜索,发现您可能会因为您的规则设置方式而遇到问题。你能确认一下吗?
-
@NathanielFredericks,我确实有一些自定义规则。其中没有一个引用刷新令牌。究竟是什么规则会导致这个问题?
-
你的grant_type是什么?应该是
refresh_token。 -
据我所知,您没有在无密码锁定设置上设置
grant_type。我将它作为测试添加到auth.params.grant_type: 'refresh_token'。但是 auth0 响应仍然有一个 null refreshToken。 -
如果是客户端网络应用,我认为你不应该使用offline_access或刷新令牌,而是实现静默登录。刷新令牌永远不应该发送到浏览器。 auth0.com/docs/tokens/refresh-token/current
标签: javascript auth0 auth0-lock