# #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
(источник).