重新验证 Firebase 用户
重新验证 Firebase 用户
我正在使用angularfire项目,尝试实现更新用户密码的方法。由于文档混乱,希望您能帮我找到重新验证用户的解决方案。我已经阅读了这个stackoverflow问题。\naccount.js:\n
vm.updateUserPassword = function() { if (vm.oldPassword && vm.newPassword && vm.confirmNewPassword) { if (vm.newPassword === vm.confirmNewPassword) { var currentCredential = firebaseAuth.EmailAuthProvider.credential(vm.currentAuth.email, vm.oldPassword); vm.currentAuth.reauthenticate(currentCredential) .then(function() { Database.updateUserPassword(vm.newPassword); }, function(error) { console.error('[Account]', error); }); } else { toastr.error('A nova senha não confere'); } } else { toastr.error('Preencha todos os campos corretamente'); } };
\ndatabase.js service:\n
vm.updateUserPassword = function(newPassword) { firebaseAuth.$updatePassword(newPassword) .then(function() { console.log('[Database] Password changed successfully!'); }).catch(function(error) { switch (error.code) { case 'auth/requires-recent-login': vm.translationId = 'FIREBASE.AUTH.REQUIRES_RECENT_LOGIN.ERROR_MSG'; break; default: vm.translationId = error.message; } $translate(vm.translationId) .then(function(translated) { toastr.error(translated); }, function(translationId) { vm.translationId = translationId; }); }); };
\n控制台错误:\nTypeError: Cannot read property \'credential\' of undefined
“Reauthenticate Firebase User”问题的出现原因是使用了错误的方法来获取凭证。正确的方法是使用firebase.auth.EmailAuthProvider.credential(user.email, userProvidedPassword);
来获取凭证,而不是firebase.auth().EmailAuthProvider.credential(user.email, userProvidedPassword);
。
解决这个问题的方法是将错误的方法替换为正确的方法。正确的方法是使用firebase.auth.EmailAuthProvider.credential(user.email, userProvidedPassword);
来获取凭证。这个方法将用户的电子邮件和提供的密码作为参数,返回一个凭证对象。
通过使用正确的方法,可以正确地获取凭证并进行进一步的认证操作。这样,就可以解决“Reauthenticate Firebase User”问题。