如何在不退出登录的情况下使用Firebase API创建新用户?

11 浏览
0 Comments

如何在不退出登录的情况下使用Firebase API创建新用户?

用户登录后,我调用firebase.auth().createUserWithEmailAndPassword(email, password)来创建新用户。它成功地创建了新的Firebase用户。在这个调用之前,firebase.auth().currentUser.uid返回的uid与调用之后不同,所以活动用户发生了变化。

有没有办法让活动用户创建另一个用户并仍然保持活动状态?

我知道一个解决方法

将用户的电子邮件和密码保存到内存中,在创建用户后重新登录到原始用户,但这需要保存密码,我不喜欢这样。

firebase.auth().createUserWithEmailAndPassword(email, password)
      .then(user => {
        // 重新登录到主账户
        firebase.auth().signInWithEmailAndPassword(current_user_email, current_user_password).then(original_user => {
          const userRef = firebase.database().ref().child(`users/${user.uid}`);
          userRef.set({
            ...

0
0 Comments

在不自动切换到新用户的情况下,通过使用辅助的Firebase实例来创建新的Firebase用户。示例代码如下:

var firebaseConfig = {
  apiKey: "asdasdlkasjdlkadsj",
  authDomain: "asdfg-12345.firebaseapp.com",
  databaseURL: "https://asdfg-12345.firebaseio.com",
  storageBucket: "asdfg-12345.appspot.com",
};
firebase.initializeApp(firebaseConfig);  // 初始化“firebase”
var fbAdmin = firebase.initializeApp(firebaseConfig, "Secondary"); // 初始化名为“Secondary”的实例“fbAdmin”作为辅助实例。

要创建用户:

fbAdmin.auth().createUserWithEmailAndPassword(email, password)
 .then(function(newUser) {
  // 成功。 
  // 注销。
  fbAdmin.auth().signOut()
   .then(function () {
    // 注销成功。
    console.log('fbAdmin已注销。');
  }, function (error) {
    // 发生错误。
    console.log('fbAdmin注销失败。');
    console.log(error);
  });
}, function (error) {
  // 这里出现了问题。
  console.log(error.code);
  console.log(error.message);
})

上述代码适用于纯JavaScript。如果使用自动配置来管理多个环境,则稍微复杂一些。如果使用node.js,则可以使用Firebase Admin Node.js SDK。有关要求和设置信息,请参阅安装说明

编辑:这个答案几乎完全相同。

0