当使用电子邮件和密码创建新用户时,身份验证状态会发生变化。
我实现了 firebase.auth().onAuthStateChanged()
observable 来观察我的应用程序中的登录状态。但它有一个用于创建新用户的工具可以重现该问题。使用 firebase.auth().createUserWithEmailAndPassword()
创建新用户后,可观察对象返回新用户,这会导致我的应用程序注销。
这正常吗?如何在不更改身份验证状态的情况下从我的应用程序创建新用户?
最佳答案
使用 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 身份验证状态发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487092/