重新验证 Firebase 用户

6 浏览
0 Comments

重新验证 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

0
0 Comments

“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”问题。

0