2017-09-10 106 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 –

相关问题