如何使用Firebase API创建新用户而无需注销?

时间:2016-06-03 06:53:26

标签: javascript firebase firebase-authentication

用户登录。我打电话用

创建新用户
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({
            ...

1 个答案:

答案 0 :(得分: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完全相同。