如何在不退出登录的情况下使用Firebase API创建新用户?
如何在不退出登录的情况下使用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({ ...
在不自动切换到新用户的情况下,通过使用辅助的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。有关要求和设置信息,请参阅安装说明。
编辑:与这个答案几乎完全相同。