如何在 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).
我想检查使用 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).