如何在不退出的情况下使用 Firebase API 创建新用户? [复制]

Posted

技术标签:

【中文标题】如何在不退出的情况下使用 Firebase API 创建新用户? [复制]【英文标题】:How create new user with Firebase API w/o signing out? [duplicate] 【发布时间】:2016-10-03 03:10:03 【问题描述】:

用户登录。我拨打电话以使用

创建新用户
firebase.auth().createUserWithEmailAndPassword(email, password)

它成功创建了新的 firebase 用户。在此调用之前firebase.auth().currentUser.uid 在调用之后给出不同的 uid。所以活跃的用户发生了变化。

有什么方法可以让活跃用户创建另一个用户并且仍然是活跃用户?

我知道一种解决方法

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

firebase.auth().createUserWithEmailAndPassword(email, password)
      .then(user => 
        // login back to main account
        firebase.auth().signInWithEmailAndPassword(current_user_email, current_user_password).then(original_user => 

          const userRef = firebase.database().ref().child(`users/$user.uid`);
          userRef.set(
            ...

【问题讨论】:

同一个问题:***.com/questions/37517208/… 【参考方案1】:

要添加新的 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);  // Intialise "firebase"
var fbAdmin = firebase.initializeApp(firebaseConfig, "Secondary"); // Intialise "fbAdmin" as instance named "Secondary".

创建用户:

fbAdmin.auth().createUserWithEmailAndPassword(email, password)
 .then(function(newUser) 
  // Success. 
  // Log out.
  fbAdmin.auth().signOut()
   .then(function () 
    // Sign-out successful.
    console.log('fbAdmin signed out.');
  , function (error) 
    // An error happened.
    console.log('Error siging out of fbAdmin.');
    console.log(error);
  );
, function (error) 
  // There's a problem here.
  console.log(error.code);
  console.log(error.message);
)

以上内容适用于纯 javascript。如果您使用auto configuration 来管理多个环境,那就有点棘手了。 (另见Reserved URLs)。

如果您使用的是 node.js,则可以使用 Firebase Admin Node.js SDK。有关要求和设置信息,请参阅installation instructions。

编辑:与this answer几乎相同。

【讨论】:

以上是关于如何在不退出的情况下使用 Firebase API 创建新用户? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 Firebase 身份验证的情况下保护 Firebase 存储? (下一个)

在不使用数据库触发器的情况下,无法使用 firebase 云功能更新 firebase 数据库

如何在不使用 Firebase 控制台的情况下向 iOS 设备发送 Firebase 云消息通知?

如何在不使用验证码验证器的情况下实现 Firebase 电话验证系统?

SwiftUI 如何在不使用 List 的情况下从 @ObservedObject ViewModel 获取 Firebase 数据

如何在不登录firebase / js的情况下注册用户[重复]