Firebase Auth 登录遇到问题,其中 UserCredentials 对象将电子邮件属性显示为空,即使在提供程序数据中也是如此

问题描述 投票:0回答:1

由于电子邮件为空,我无法访问用户电子邮件以保存在数据库中进行身份验证。 我在当地环境中工作。 这里用户中的电子邮件以及提供商数据中的电子邮件为空

尽管尝试了各种解决方案,例如添加授权域和设置新的 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
reactjs firebase firebase-authentication
1个回答
0
投票

我希望您找到解决方案,但您的 userData.user.providerData[0].email 对我有用,非常感谢!

© www.soinside.com 2019 - 2024. All rights reserved.