AngularFire $createUser 的承诺不返回包含用户数据的对象

AngularFire $createUser 's promise doesn't return an object containing user data

本文关键字:用户数 用户 数据 对象 包含 createUser 承诺 AngularFire 返回      更新时间:2023-09-26

根据文档,$createUser函数,"...返回一个承诺,该承诺使用包含有关已创建用户的用户数据的对象进行解析"

https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-users-and-authentication-createusercredentials

当我使用该函数(请参阅下面的代码)时,我可以成功注册用户,但是当我读取应包含 UID 的变量时,它没有定义。

在Chrome的控制台中,我得到:"类型错误:无法读取未定义的属性'uid'"

我做错了什么吗?我应该以不同的方式检索值吗?

myApp.factory('Authentication', function($firebase, $firebaseAuth, FIREBASE_URL, $location, $rootScope) {
// using $firebaseAuth instead of SimpleLogin 
var ref = new Firebase(FIREBASE_URL);
var authObj = $firebaseAuth(ref);
var myObject = {
    login : function(user) {
        console.log('authentication.js: logging in')
        return authObj.$authWithPassword({
            email: user.email,
            password: user.password
        });
    }, //login
    logout : function(){
        return authObj.$unauth();
    }, // logout 
    register : function(user) {
        console.log('authentication.js: registering user')
        return authObj.$createUser({
            email: user.email,
            password: user.password
        }).then( function(userData) {
            console.log("User " + userData.uid + " created successfully!");
        });
    } // register
} //myObject
return myObject;
});

问题是我使用的是旧版本的Firebase。我使用的是2.0.4版本,根据这篇文章 https://github.com/firebase/angularfire/issues/507,要从承诺中获取用户对象,您需要Firebase 2.0.5或更高版本以及AngularFire 0.9.1或更高版本。

使用这些 CDN 现在一切正常。

<!-- Firebase -->
<script src="https://cdn.firebase.com/js/client/2.0.5/firebase.js"></script>
<!-- AngularFire -->
<script src="https://cdn.firebase.com/libs/angularfire/0.9.1/angularfire.min.js"></script>