无法使用 auth0 锁定登录
Posted
技术标签:
【中文标题】无法使用 auth0 锁定登录【英文标题】:Can not login with auth0 lock 【发布时间】:2019-01-02 03:29:06 【问题描述】:我使用 auth0 使用 angularjs 创建函数登录。
当我输入电子邮件和密码登录成功时,没有返回消息并再次重定向到登录页面。 我检查数据返回看不到'id_token'。
app.js 包含配置验证
var rootApp = angular.module('xxxx', [ 'auth0.lock', ]); rootApp.config(function(lockProvider) lockProvider.init( 客户 ID:'xxxxx', 域:'xxxx', 授权: redirectUrl: window.location.origin + '/callback', 响应类型:'令牌', 参数: 范围:'openid 个人资料' , 选项: _idTokenVerification:真, configurationBaseUrl: 'https://cdn.auth0.com', 主题: 标志:'/logos/full_size/medium.png', 原色:'#C59D18' ); );auth.service.js
(function ()
'use strict';
angular.module('BlurAdmin')
.service('authService', authService);
authService.$inject = ['lock', '$location'];
function authService(lock, $location)
function login()
// Display the Lock widget using the
// instance initialized in the app.js config
lock.show();
function logout()
// Remove tokens and expiry time from localStorage
localStorage.removeItem('access_token');
localStorage.removeItem('id_token');
localStorage.removeItem('expires_at');
$location.path('/');
function handleAuthentication()
// Uncomment if you are not using html5Mode
// lock.interceptHash();
lock.on('authenticated', function(authResult)
if (authResult && authResult.accessToken && authResult.idToken)
console.log('Authenticated!', authResult);
_setSession(authResult);
);
lock.on('authorization_error', function(err)
console.log(err);
alert(
'Error: ' + err.error + '. Check the console for further details.'
);
);
function _setSession(authResult)
// Set the time that the Access Token will expire
var expiresAt = JSON.stringify(
authResult.expiresIn * 1000 + new Date().getTime()
);
// Save tokens and expiration to localStorage
localStorage.setItem('access_token', authResult.accessToken);
localStorage.setItem('id_token', authResult.idToken);
localStorage.setItem('expires_at', expiresAt);
function isAuthenticated()
// Check whether the current time is
// past the Access Token's expiry time
var expiresAt = JSON.parse(localStorage.getItem('expires_at'));
return new Date().getTime() < expiresAt;
return
login: login,
logout: logout,
handleAuthentication: handleAuthentication,
isAuthenticated: isAuthenticated
;
)();
【问题讨论】:
【参考方案1】:乍一看,您可能没有收到id_token
,因为您没有在app.js
中指定responseType
包含id_token
:
auth:
...
responseType: 'token id_token',
...
试一试,你应该很高兴!
【讨论】:
以上是关于无法使用 auth0 锁定登录的主要内容,如果未能解决你的问题,请参考以下文章