【发布时间】:2018-04-19 08:18:39
【问题描述】:
我无法在我的 react-native 应用程序中保留 firebase 会话。这个问题几乎与 React Native - Firebase auth persistence not working 但是那里提供的答案对我不起作用。
目前我的登录方式如下:
export const loginUser = ({ email, password }) => {
return (dispatch) => {
dispatch({ type: LOGIN_USER });
firebase.auth().signInWithEmailAndPassword(email, password)
.then(user => loginUserSuccess(dispatch, user))
.catch(() => loginUserFailed(dispatch))
};
};
我的会话已创建,我可以访问存储在 firebase 上的用户对象。
当我 Cmd+R 或当我关闭应用程序并重新打开它时,我的会话就消失了。我在 app.js 文件的 componentWillMount() 部分运行了以下内容:
firebase.auth().onAuthStateChanged((user) => {
if (user) {
console.log('user is logged');
} else {
console.log('not logged in')
}
});
每当我刷新应用程序或将其完全关闭并重新打开时,我都会收到“未登录”响应。
我也试过查询:
firebase.auth().currentUser
但在返回 null 时遇到同样的问题
我做错了什么?
有没有一种特殊的方法可以让我错过的会话保持活动状态?
【问题讨论】:
-
凭证临时密钥存储在浏览器中(会话或 cookie 或两者)。您可能已修改浏览器以在页面关闭时清除会话?不确定。我什至可以使用同一个浏览器打开一个新标签,并且已经登录。希望这会有所帮助。检查您的浏览器会话/cookie 设置是否恢复默认设置?
-
@ronroyston 这是一个反应原生的移动应用程序。 I️ 正在为 android 和 iOS 设备创建本机应用程序。 I️ 不要认为应用程序会删除会话 cookie。我️可能是错的
-
您使用的是最新版本的 firebase.js 吗? 4.5.2 中修复了一个与 react-native 持久性相关的问题。
-
这看起来很像 Udemy react-native 课程作业,这与我遇到的问题相同。用户在重新加载应用程序后永远不会被重置,因此它总是显示注销按钮,而不是登录表单。我有一个要点gist.github.com/mjstelly/42124cc52bf08b1b257e1e535fa163ad
标签: javascript reactjs firebase react-native firebase-authentication