由于电子邮件为空,我无法访问用户电子邮件以保存在数据库中进行身份验证。 我在当地环境中工作。 这里用户中的电子邮件以及提供商数据中的电子邮件为空
尽管尝试了各种解决方案,例如添加授权域和设置新的 Firebase 项目,但 UserCredentials 对象中电子邮件属性为空的问题仍然存在。
这是设置 firebase 的组件之一的代码
import React, { useEffect } from 'react'
import "./loginButton.css"
import { FcGoogle } from "react-icons/fc";
import { BsGithub } from "react-icons/bs"
import { GithubAuthProvider, GoogleAuthProvider, signInWithPopup } from 'firebase/auth';
import { firebaseAuth } from '../utils/FirebaseConfig';
import axios from 'axios';
import "react-toastify/dist/ReactToastify.css"
import { firebaseLoginRoute } from '../utils/BackendRoutes';
import { useNavigate } from 'react-router-dom';
const LoginButtons = () => {
const navigate = useNavigate();
const providers = {
google: new GoogleAuthProvider(),
github: new GithubAuthProvider()
}
const firebaseLogin = async (loginType) => {
try {
const provider = providers[loginType];
const userData = await signInWithPopup(firebaseAuth, provider);
console.log(userData);
const email = userData.user.email ? userData.user.email : userData.user.providerData[0].email;
console.log(email)
const { data } = await axios.post(firebaseLoginRoute, { email });
console.log(data);
if (data.status) {
localStorage.setItem("chat-user", JSON.stringify(data.user))
navigate("/");
} else {
navigate("/setUsername");
}
} catch (err) {
console.log(err);
}
}
return (
<div className='socialBtnContainer'>
<button type='button' onClick={() => firebaseLogin("google")}>
<FcGoogle />
</button>
<button type='button' onClick={() => firebaseLogin("github")}>
<BsGithub />
</button>
</div>
)
}
export default LoginButtons
我希望您找到解决方案,但您的 userData.user.providerData[0].email 对我有用,非常感谢!