gpt4 book ai didi

javascript - 创建新用户后 Firebase Auth 状态发生变化

转载 作者:行者123 更新时间:2023-11-30 19:50:53 25 4
gpt4 key购买 nike

当使用电子邮件和密码创建新用户时,身份验证状态会发生变化。我实现了 firebase.auth().onAuthStateChanged() observable 以在我的应用程序中观察登录状态。但它有一个用于创建重现该问题的新用户的工具。使用firebase.auth().createUserWithEmailAndPassword() 创建新用户后,observable 会返回新用户,这会导致我的应用注销。

这正常吗?如何在不更改授权状态的情况下从我的应用创建新用户?

See the stackblitz example

最佳答案

在使用 firebase.auth().createUserWithEmailAndPassword() 创建用户时,它会自动注销当前用户并登录到新创建的用户。为避免这种情况,您必须创建新用户用户使用 admin sdk。

这里是示例代码:

exports.createUser = functions.firestore
.document('user/{userId}')
.onCreate(async (snap, context) => {
try {
const userId = snap.id;
const batch = admin.firestore().batch();
const newUser = await admin.auth().createUser({
disabled: false,
displayName: snap.get('name'),
email: snap.get('email'),
password: snap.get('password')
});

const ref1 = await
admin.firestore().collection('user').doc(newUser.uid);
await batch.set(ref1, {
id: newUser.uid,
email: newUser.email,
name: newUser.displayName,
createdAt: admin.firestore.FieldValue.serverTimestamp()
});
const ref3 = await admin.firestore().collection('user').doc(userId);
await batch.delete(ref3);
return await batch.commit();
}
catch (error) {
console.error(error);
}

});

关于javascript - 创建新用户后 Firebase Auth 状态发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com