javascript - Firebase onAuthStateChanged 在登录时被调用两次

标签 javascript reactjs firebase redux firebase-authentication

我是 Firebase 的新手。我正在尝试使用 React + Redux 登录。当我点击“登录”时,它将让我登录一次,然后再次调用 onAuthStateChanged 并且 res 为空,这让我退出

这是我的 Firebase 服务:

const initFirebase = () => {

    firebase.initializeApp(config.firebase)

    firebase.auth().onAuthStateChanged((res) => {
        console.log('Firebase - onAuthStateChanged', {res})

        if(res) {
            const formData = {
                email: res.email,
                uid: res.uid,
            }

            // Check if email exists against local API
            APIAuthService(endpoint, 'post', formData).then(response => {
                if(response.status) {
                    let userData = response.data
                    store.dispatch(authAction.login(userData))
                }
            })
        }
        else {
            store.dispatch(authAction.logout())
        }
    })
}

我的 Login.js 组件也可以在这里查看(第 41 行)https://pastebin.com/qcRH6gv2

最佳答案

是的,这是正常的,onAuthStateChanged 会一直触发。您可以使用此代码防止多次调用:

var authFlag = true;
firebase.auth().onAuthStateChanged((res) => {
    if(res && authFlag) {
        console.log('Firebase - onAuthStateChanged', {res})
        authFlag = false;
        //rest of your code

关于javascript - Firebase onAuthStateChanged 在登录时被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55845800/

相关文章:

reactjs - firebase + create-react-app 托管错误

javascript - 谷歌分析 trackEvent 是如何工作的?

javascript - AngularJS 和 Web API 中请求的资源上不存在 'Access-Control-Allow-Origin' header

javascript - 如何检查 Jest 中异步抛出的错误类型?

reactjs - React 测试库 : Test if children are passed/rendered correctly

reactjs - 如何在AWS中API网关和React应用程序之间启用CORS策略?

firebase - 如何在 Firebase 托管上部署 Streamlit Python 应用程序?

Flutter 应用程序的 Firebase 通知突然停止

javascript - 网页如何将通知数量放在页面选项卡图标内?

javascript - 输入输入值时如何正确使用 toFixed