2017-09-10 110 views
2

Firebase身份驗證不會持續登錄用戶,每次刷新或重新打開應用程序時,我都必須重新登錄。React Native - Firebase身份驗證持久性無法正常工作

我已經嘗試設置持久化到本地和回調做驗證其集,但持久性仍沒有工作

有關設置持久性,我使用...

//set auth persistence 
    firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL) 
    .then(function() { 
     console.log("successfully set the persistence"); 

    }) 
    .catch(function(error){ 
    console.log("failed to ser persistence: " + error.message) 
    }); 

。 。 。 對於我籤我使用此代碼

firebase.auth().signInWithEmailAndPassword(email, password) 
     .then((user) =>{ 
     this.checkAccountStatus(user.uid, user.email); 
     }) 
     .catch(function(error) { 
     // Handle Errors here. 

     var errorCode = error.code; 
     var errorMessage = error.message; 

     console.log(errorMessage) 
     // ... 
    }); 

這裏是我使用的檢查登錄狀態代碼...

if (firebase.auth().currentUser) { 
     const currentUser = firebase.auth().currentUser; 
     console.log("Signed in username" + currentUser.displayName); 

     this.props.navigation.navigate('AppTab'); 
     }else{ 
     console.log("no user signed in"); 
     this.props.navigation.navigate('AuthTab'); 
     } 

,如果有什麼我沒有做正確的

+0

你可以添加哪個庫用於Firebase嗎? – bennygenel

+0

我正在使用簡單的「firebase」包....「firebase」:「^ 4.3.0」, –

回答

5

您不需要設置持久性。 Firebase默認爲您處理它。你只需要調用這個函數來檢查用戶是否登錄與否:只有當用戶登出或清洗應用數據

firebase.auth().onAuthStateChanged((user) => { 
     if (user) { 
     console.log('user is logged'); 
     } 
} 

這將不會被觸發。

您可以在官方文檔找到更多的細節:https://firebase.google.com/docs/auth/web/manage-users

希望它能幫助。

+0

我正在使用這種方法,而不是... firebase.auth()。currentUser; ...它不工作應用程序使用Cmd + R刷新或從模擬器本身重新啓動 –

+0

您應該將您的方法替換爲我提供的方法。通過文檔,它是在應用程序關閉後檢查用戶是否登錄的正確方法。讓我知道如果工作。 – soutot

+1

只是試了一下,它沒有工作,我也沒有期待它,因爲根據文檔,如果用戶已經簽名是.currentUser()是正確的方式來知道狀態是登錄還是不出....參見標題爲「獲取當前登錄的用戶」,地址爲https://firebase.google.com/docs/auth/web/manage-users –

相關問題