Firebase / Angularfire 0.9 - 创建新用户和个人资料

Firebase / Angularfire 0.9 - Create new user and profile

本文关键字:用户 个人资料 新用户 创建 Angularfire Firebase      更新时间:2023-09-26

要在Angularfire 0.9中创建新用户,我可以使用$firebaseAuth服务和$createUser方法。

但是据我所知,此方法不会返回任何新用户凭据。因此,如果我想向该用户添加配置文件,检索该用户身份验证数据(特别是"uid")的最佳方法是什么,以便我可以为新用户保存配置文件数据。下面是我正在尝试做的事情的示例

var FIREBASEURL = "https://<my-firebase>.firebaseio.com"
var ref = new Firebase(FIREBASEURL);
$rootScope.authObj = $firebaseAuth(ref);
var newUser = {
  email: "email@email.com",
  password: "password",
  displayName: "Display Name",
  favFood: "Food"
};
$rootScope.authObj.$createUser(newUser.email, newUser.password).then(function() {
  console.log("User created successfully!");
  // Retrieve new Auth Data specifically uid    
  var newAuthData = ??????????
  // Remove password from object and create user profile
  delete newUser.password;
  newUser.timestamp = Firebase.ServerValue.TIMESTAMP;
  var userRef = new Firebase(FIREBASEURL + '/users/');
  userRef.child( newAuthData.uid ).set(newUser);
}).catch(function(error) {
  console.error("Error: ", error);
});

在 0.9.1 中,uid 将返回 promise。例如:

var FIREBASEURL = "https://<my-firebase>.firebaseio.com"
var ref = new Firebase(FIREBASEURL);
$rootScope.authObj = $firebaseAuth(ref);
var newUser = {
  email: "email@email.com",
  password: "password",
  displayName: "Display Name",
  favFood: "Food"
};
$rootScope.authObj.$createUser(newUser.email, newUser.password).then(function(authData) {
  console.log(authData.uid); //should log new uid.
  return createProfile(newUser, authData);
});

function createProfile(authData, user){         
  var profileRef = $firebase(ref.child('profile'));
  return profileRef.$set(authData.uid, user);
};

这应该会让你继续前进。关键是将返回的承诺(在我的示例中为 authData)传递给后续函数。

在 0.9.0 中,需要调用身份验证方法才能获取用户的 uid。