javascript - 创建新用户后 Firebase 身份验证状态发生变化

标签 javascript firebase firebase-authentication

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

这正常吗?如何在不更改身份验证状态的情况下从我的应用程序创建新用户?

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 身份验证状态发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487092/

相关文章:

javascript - 推文按钮未添加链接 url

javascript - React Native 在哪里存储生成的 javascript 包?

javascript - 复选框更改时,AngularFire 3 向数据绑定(bind)不会更新 firebase

javascript - Angular/Firebase : How to put user response in front-end model

javascript - 控制台中的 Firebase 无效 api key 错误

android - 错误 :Execution failed for task ':app:processDebugGoogleServices' - com. google.android.gms

php - 通过 javascript 从服务器端显示错误消息

Javascript 变量的 "Value"属性未出现在 Intellisense 上

javascript - 如何等待所有数据下载到Firebase(Firestore)存储中?

java - 带有嵌套 pojo 的 Firebase Java setter 和 getter