我想使用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用户数据库中注册。但我必须在提交按钮上连续点击三次才能收到验证邮件。很奇怪。
为什么不在第一次提交点击时发送它?
以下是错误截图:
答案 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;
});
所以序列在这里: