AngularJS Firebase sendEmailVerification无法正常工作

时间:2016-10-09 19:33:28

标签: angularjs firebase firebase-authentication

我想使用Firebase向注册用户发送验证电子邮件。

我的注册控制器如下:

app.controller("MyregisterCtrl", ["$scope", "firebase", "$firebaseAuth", "$location", function ($scope, firebase, $firebaseAuth, $location) {

    $scope.signUp = function () {
        var username = $scope.user.email;
        var password = $scope.user.password;


        if (username && password) {
            var auth = $firebaseAuth();
            var user = firebase.auth().currentUser;

            auth.$createUserWithEmailAndPassword(username, password)
            user.sendEmailVerification()
                .then(function () {
                    console.log("User signup success");
                    $scope.errMsg = false;
                    $location.path('/login.signin');
                }).catch(function (error) {
                $scope.errMsg = true;
                $scope.errorMessage = error.message;
            });
        }
    }

}]);

用户在Firebase用户数据库中注册。但我必须在提交按钮上连续点击三次才能收到验证邮件。很奇怪。

为什么不在第一次提交点击时发送它?

以下是错误截图:

enter image description here

1 个答案:

答案 0 :(得分:2)

创建用户帐户是一项可能需要一些时间的操作。如果您在操作完成之前致电sendEmailVerification(),则会在屏幕截图中显示错误消息(以后的任何问题:请不要发布文字图片,发布实际文字本身)。

要解决此问题,您可以等待所谓的承诺解决,直到创建帐户:

auth.$createUserWithEmailAndPassword(username, password)
    .then(function(user) {
        user.sendEmailVerification()
    }).then(function () {
        console.log("User signup success");
        $scope.errMsg = false;
        $location.path('/login.signin');
    }).catch(function (error) {
        $scope.errMsg = true;
        $scope.errorMessage = error.message;
    });

所以序列在这里:

  1. 创建用户帐户
  2. 一旦成功,发送验证邮件
  3. 一旦成功,请记录成功并重定向
  4. 如果1或2失败,则显示错误消息