如何在 React js 中使用 firebase 以 google 登录时检查是否已注册用户?

How to check If registered user when login with google using firebase in react js?

我想检查使用 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);
  };

您正在寻找 User 对象的 UserInfo.providerId field

像这样:

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 (source).