Firebase简单登录只会抛出&INVAHID_EMAIL'错误

时间:2014-06-22 15:08:54

标签: error-handling firebase angularfire firebasesimplelogin

关于stackoverflow的第一个问题,请告诉我我的信息是否不足。提前致谢。

我正在尝试实现firebase-simple-login,但我得到的唯一错误类型是signIn函数上的'INVALID EMAIL'。如果我使用现有电子邮件输入错误的密码,它仍会抛出无效的电子邮件。

$scope.signIn = function() {
        $rootScope.auth.$login('password', {
            email: $scope.email,
            password: $scope.password
        }).then(function(user) {
            console.log("user has email " + user.email);
        }, function(error) {
            if (error = 'INVALID_EMAIL') {
                console.log('email invalid or not signed up');
            } else if (error = 'INVALID_PASSWORD') {
                console.log('invalid password');
            } else {
                console.log(error);
            }
        });
    };

供额外参考;带有相应表单的html

<div class="form-group">
    <input type="email" class="form-control" placeholder="email" ng-model="email" />
</div>
<div class="form-group">
    <input type="password" class="form-control" placeholder="password" ng-model="password" />
</div>
<button type="submit" class="btn btn-success" ng-click="signIn()">Sign in</button>

我似乎无法在firebase文档中找到任何有用的错误类型,所以我希望你能提供帮助。

CreateUser被调用:

 $scope.signUp = function() {
        $rootScope.auth.$createUser($scope.email, $scope.password, function(error,user) {
            if (!error) {
                console.log('User Id: ' + user.uid + ', Email: ' + user.email);
            }
        }).then(function(){
            $rootScope.auth.$login('password', {
                email: $scope.email,
                password: $scope.password
            });
        });
    };

2 个答案:

答案 0 :(得分:1)

这是我在进一步检查错误功能后找到的解决方案。您似乎需要进入错误对象,而不仅仅是error.code error,而是使用运算符===代替=。我从firebase文档中直接提升了$login(),但在这个过程中我可能会混淆一些东西。无论如何,这是工作代码。

function(error) {
            if (error.code === 'INVALID_EMAIL') {
                console.log('email invalid or not signed up');
            } else if (error.code === 'INVALID_PASSWORD') {
                console.log('invalid password');
} 

答案 1 :(得分:0)

您实际上可以使用Firebase提供的错误消息而不是if子句。

function(error){
  if(error){
    console.log(error_code.message)
  }
}