React Native - Firebase身份验证持久性无法正常工作
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');
}
,如果有什么我没有做正确的
您不需要设置持久性。 Firebase默认为您处理它。你只需要调用这个函数来检查用户是否登录与否:只有当用户登出或清洗应用数据
firebase.auth().onAuthStateChanged((user) => {
if (user) {
console.log('user is logged');
}
}
这将不会被触发。
您可以在官方文档找到更多的细节:https://firebase.google.com/docs/auth/web/manage-users
希望它能帮助。
我正在使用这种方法,而不是... firebase.auth()。currentUser; ...它不工作应用程序使用Cmd + R刷新或从模拟器本身重新启动 –
您应该将您的方法替换为我提供的方法。通过文档,它是在应用程序关闭后检查用户是否登录的正确方法。让我知道如果工作。 – soutot
只是试了一下,它没有工作,我也没有期待它,因为根据文档,如果用户已经签名是.currentUser()是正确的方式来知道状态是登录还是不出....参见标题为“获取当前登录的用户”,地址为https://firebase.google.com/docs/auth/web/manage-users –
你可以添加哪个库用于Firebase吗? – bennygenel
我正在使用简单的“firebase”包....“firebase”:“^ 4.3.0”, –