Angular Firebase $ createUser函数返回错误

Fug*_*Web 2 javascript angularjs firebase angularfire

我陷入了僵局.我正在尝试使用$ firebaseAuth创建一个使用AngularFire的用户,而不是文档中推荐的已弃用的FirebaseSimpleLogin.我确信表单提交了有效的电子邮件和密码,但我仍然在控制台中收到以下错误:

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);
    }   
};
Run Code Online (Sandbox Code Playgroud)

jwn*_*ngr 7

更新:只需升级到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);
});
Run Code Online (Sandbox Code Playgroud)

我会立即更新文档,但这是解决问题的方法.