【问题标题】:Reauthenticate Firebase User重新验证 Firebase 用户
【发布时间】:2017-02-24 08:24:51
【问题描述】:

我正在使用 angularfire 开发一个项目,我正在尝试实现更新用户密码的方法。由于有关它的混乱文档,请帮助我找到重新验证用户的解决方案。我已经读过这个stackoverflow question

account.js:

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');
        }
    };

database.js 服务:

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;
                    });
            });
    };

控制台错误:

TypeError: Cannot read property 'credential' of undefined

【问题讨论】:

    标签: firebase


    【解决方案1】:

    您可以通过以下方式获取凭证:

    firebase.auth.EmailAuthProvider.credential(user.email, userProvidedPassword);

    代替:

    firebase.auth().EmailAuthProvider.credential(user.email, userProvidedPassword);

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多