Как проверить, зарегистрирован ли пользователь при входе в Google с использованием firebase в react js?

# #javascript #firebase #firebase-authentication

Вопрос:

я хочу проверить, зарегистрировался ли человек, вошедший в систему с учетной записью Google, ранее или нет, для сохранения в Firestore. Есть ли какой-нибудь способ проверить?

  const ggProvider = new GoogleAuthProvider();

 const handleGgLogin = async () => {
    const { user } = await signInWithPopup(auth, ggProvider);

    const collectionRef = collection(db, "Account");
    const payload = {
      displayName: user.displayName,
      email: user.email,
      photoUrl: user.photoURL,
      uid: user.uid,
    };
    await addDoc(collectionRef, payload);
  };
 

Ответ №1:

Вы ищете UserInfo.providerId поле User объекта.

Что-то вроде этого:

 onAuthStateChanged(auth, (user) => {
  if (user) {
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/firebase.User
    const uid = user.uid;

    // Show the provider(s) that the user is signed in with
    user.providerData.forEach((userInfo) => { // 👈
      console.log(userInfo.providerId);       // 👈
    })

    // ...
  }
});
 

Вам нужен цикл, поскольку пользователь может входить в систему с несколькими поставщиками одновременно. Строка поставщика для Google google.com (источник).