簡體   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