gcf*_*bri 9 firebase firebase-authentication
我正在使用 Firebase 开发一个 Web 项目,我需要处理登录页面上的所有身份验证错误。
为什么我无法像处理其他“auth/something-error”错误代码那样获得 error.code equals 'auth/argument-error' ?
例如,当我有一个登录表单并按下按钮而没有填写电子邮件和密码时,控制台中会抛出以下错误:
如何获取此错误对象并将其保存在变量中?
@Frank van Puffelen,请回答。
登录.js
vm.signIn = function() {
vm.loading = true;
return $q(function(resolve, reject) {
firebaseAuth.$signInWithEmailAndPassword(vm.email, vm.password)
.then(function(firebaseUser) {
console.log('[Firebase] User signed as', firebaseUser);
vm.loading = false;
resolve();
$state.go('main');
}).catch(function(error) {
console.error('[Code]', error.code);
console.error('[Message]', error.message);
switch (error.code) {
case 'auth/argument-error':
vm.translationId = 'IT DOENST WORK LIKE ERRORS BELOW';
console.log('IT DOENST WORK LIKE ERRORS BELOW');
break;
case 'auth/wrong-password':
vm.translationId = 'FIREBASE.AUTH.WRONG_PASSWORD.ERROR_MSG';
break;
case 'auth/user-not-found':
vm.translationId = 'FIREBASE.AUTH.USER_NOT_FOUND.ERROR_MSG';
break;
case 'auth/user-disabled':
vm.translationId = 'FIREBASE.AUTH.USER_DISABLED.ERROR_MSG';
break;
case 'auth/invalid-email':
vm.translationId = 'FIREBASE.AUTH.INVALID_EMAIL.ERROR_MSG';
break;
default:
vm.loading = false;
vm.translationId = error.message;
}
$translate(vm.translationId)
.then(function(translated) {
vm.loading = false;
toastr.error(translated);
}, function(translationId) {
// NOTE: Validar quando o catch dispara!
vm.translationId = translationId;
});
vm.loading = false;
reject();
});
});
};
Run Code Online (Sandbox Code Playgroud)
小智 11
您需要有一个 div 或按钮或具有在新 RecaptchaVerifier 构造函数中指定的 ID 的任何元素。请看下面的代码
window.recaptchaVerifier = new RecaptchaVerifier("sign-in-button", {
'callback': (response) => {
console.log("prepared phone auth process");
}
}, auth);
Run Code Online (Sandbox Code Playgroud)
当电子邮件或密码未提供给 firebase 并且无法在 catch 块中处理时,就会发生这种情况。因为它是一个参数错误。下面的代码检查电子邮件和密码是否存在,然后仅调用 firebase.auth()
$scope.login = function(data){
$scope.err = null;
$scope.busy = true;
if(!data || !data.email || !data.password){
$timeout(function(){
$scope.err = {
code:'InvalidParms',
message: "Please provide correct email."
};
$scope.busy = false;
},0);
return;
}
firebase.auth().signInWithEmailAndPassword(data.email,data.password).then(function(res){
if(res){
$rootScope.user = res;
if(res.emailVerified){
$location.path('/');
}else{
$timeout(function(){
$scope.err = {
code:'EmailNotVerified',
message: "You email is not yet verified. Please verify your email. Click on resend verification mail if you haven't got a verification mail from us."
};
},0);
}
//
}
$scope.busy = false;
}).catch(function(err){
$timeout(function(){
console.log(err);
$scope.busy = false;
},0);
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28571 次 |
| 最近记录: |