Firebase kicks out current user

前端 未结 14 1993
一个人的身影
一个人的身影 2020-11-22 01:42

So I have this issue where every time I add a new user account, it kicks out the current user that is already signed in. I read the firebase api and it said that \"I

14条回答
  •  一个人的身影
    2020-11-22 02:05

    I just created a Firebase Function that triggers when a Firestore document is Created (with rules write-only to admin user). Then use admin.auth().createUser() to create the new user properly.

    export const createUser = functions.firestore
    .document('newUsers/{userId}')
    .onCreate(async (snap, context) => {
        const userId = context.params.userId;
        const newUser = await admin.auth().createUser({
            disabled: false,
            displayName: snap.get('displayName'),
            email: snap.get('email'),
            password: snap.get('password'),
            phoneNumber: snap.get('phoneNumber')
        });
        // You can also store the new user in another collection with extra fields
        await admin.firestore().collection('users').doc(newUser.uid).set({
            uid: newUser.uid,
            email: newUser.email,
            name: newUser.displayName,
            phoneNumber: newUser.phoneNumber,
            otherfield: snap.get('otherfield'),
            anotherfield: snap.get('anotherfield')
        });
        // Delete the temp document
        return admin.firestore().collection('newUsers').doc(userId).delete();
    });
    

    You can Algo use functions.https.onCall()

    exports.createUser= functions.https.onCall((data, context) => {
        const uid = context.auth.uid; // Authorize as you want
        // ... do the same logic as above
    });
    

    calling it.

    const createUser = firebase.functions().httpsCallable('createUser');
    createUser({userData: data}).then(result => {
        // success or error handling
    });
    

提交回复
热议问题