Angular Firebase $createUser函数返回错误

Angular Firebase $createUser function returns error

本文关键字:返回 错误 函数 createUser Firebase Angular      更新时间:2023-09-26

我在这个问题上陷入了僵局。 我正在尝试使用$firebaseAuth而不是文档中建议的已弃用的FirebaseSimpleLogin创建具有AngularFire的用户。 我确定表单提交了有效的电子邮件和密码,但我在控制台中继续收到以下错误:

Error: Firebase.createUser failed: First argument must contain the key "email" with type "string"

您可以看到代码,我使用工厂服务来处理$createUser方法,这是发生错误的地方,因为一旦该方法返回,后续的 console.logs 就不会触发。 请注意,我还尝试在文档中使用样板代码,而不是在控制器和服务之间拆分它,并收到了相同的错误。 非常感谢您的帮助,谢谢!

ng-submit="register()" 在表单元素上

$scope.register = function(){ console.log($scope.user); // logs object correctly // Authentication is passed into the controller as a dependency Authentication.register($scope.user) .then(function(){ //This does NOT fire console.log("User created successfully!"); Authentication.login($scope.user);
}) .then(function(authData){ console.log("Logged in as:", authData.uid); }) .catch(function(error) { console.log('error'); $scope.errorMessage = error.toString(); }); };

认证工厂服务

var obj = {
    register: function(user){
        var obj = {email: user.email, password: user.password};
        console.log(obj); // works correctly
        //var auth has the reference to Firebase
        return auth.$createUser(obj);
    }   
};

更新:只需升级到AngularFire 0.9.1或更高版本,此问题将得到解决。

更新详细信息:使用单个凭据参数(就像原始提问者所做的那样)现在是从 AngularFire 0.9.1 开始调用此参数(以及其他身份验证方法)的建议方法。下面描述的格式已被弃用,并将在即将发布的版本中删除,因此我们不建议使用它。

这是我在编写文档时的错。对于完全可以理解的混乱,我深表歉意。我想保持API与以前的AngularFire API的向后兼容,并决定让用户管理方法采用单独的参数,而不是像常规Firebase SDK那样采用参数对象。但是,文档(和示例)不能准确反映此决定。您的代码应如下所示:

auth.$createUser("test@test.com", "password").then(function() {
  console.log("User created successfully!");
}).catch(function(error) {
  console.log("Error:", error);
});

我会立即更新文档,但这是让您畅通无阻的答案。

我得到同样的错误。Angularfire 1.1或更高版本(在家代码)(使用Bower更新)。我正在按照教程 https://www.firebase.com/docs/web/libraries/angular/guide/user-auth.html 并使用代码来管理用户。

该代码适用于硬编码字符串,例如 user@domain.com。我又找到了解决方法。如果我将 + '' 添加到对象的参数中,则 $Auth.createUser()。我也工作。我觉得我发布的电子邮件/pwsd 文本作为 ng-model 不是字符串?