2016-10-09 40 views
0

Firebaseを使用している登録ユーザーに確認メールを送信します。AngularJS Firebase sendEmailVerificationが動作しません

マイ合わせコントローラは、次のようなものです:

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ユーザデータベースに登録されます。しかし、確認メールを受け取るには、送信ボタンの3回続けてクリックする必要があります。非常に奇妙な。

なぜ最初の送信クリックで送信しないのですか?ここで

は、エラーのスクリーンショットです:ユーザアカウントの作成

enter image description here

答えて

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のいずれかが失敗した場合は、エラーメッセージを表示します。
関連する問題