繁体   English   中英

Firebase 和 React Native:onAuthStateChanged 没有被触发

[英]Firebase and React Native: onAuthStateChanged doesn't get triggered

因此,我正在使用 Firebase 开发我的第一个 React 本机应用程序,并且我的代码中有以下结构:

ComponentDidMount(){
    this.verifySession();
    console.log("Component did mount");
}

verifySession = () =>{
    console.log("inside VS");
    firebase.auth().onAuthStateChanged(user =>{
        if(user){
            this.props.navigation.navigate('Dashboard');
            console.log("dashboard");
        }else{
            this.props.navigation.navigate('Login');
            console.log("Login");
        }
    });
}

问题是,我的 verifySession function 没有被触发。 实际上,我没有收到任何日志,所以我认为 ComponentDidMount 也没有被执行。 此代码放置在我的 LoadingScreen 组件中。

这是我的 app.js,我在其中初始化 Firebase conf:

import * as firebase from 'firebase';
import {firebaseConfig} from './data/config';


const Stack = createStackNavigator();
firebase.initializeApp(firebaseConfig);

我还为我的 LoadingScreen 尝试了以下方法:

import Dashboard from './dashboard';
import Login from './login';

render(){
    firebase.auth().onAuthStateChanged(function(user){
        if(user){
            return (<Dashboard/>);
        }else{
            return (<Login/>);
        }  
    });

    return(
        <View>
            <Text>Verifying session...</Text>
        </View>
    )
}

登录应该被渲染,但它显示“验证会话”,这让我想如果语句根本没有被执行。

对此问题的任何想法/建议将不胜感激。

onAuthStateChanged旨在添加观察者而不是直接调用。 可能它没有触发,因为用户的登录状态根本没有改变,而且您没有尝试让任何人登录,所以没有什么可以触发它。 尝试实现auth().createUserWithEmailAndPassword(email, password)或 `auth().signInWithEmailAndPassword(email, password)' 并测试用户创建/登录。

这篇文章也可能有用; 它将身份验证观察器放在一个单独的组件中,并允许您根据用户的登录状态在两个导航堆栈之间导航: https://heartbeat.fritz.ai/how-to-manage-authentication-flows-in-react-native- with-react-navigation-v5-and-firebase-860f57ae20d3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM