Firebase - 一小时后丢失身份验证会话

Posted

技术标签:

【中文标题】Firebase - 一小时后丢失身份验证会话【英文标题】:Firebase - Losing Auth Session After An Hour 【发布时间】:2018-05-10 03:54:20 【问题描述】:

我将 Firebase 身份验证添加到我的 Reactjs(和 Redux)网络应用程序中,一切正常。我正在使用电子邮件/密码登录,并调用 firebase.auth().signInWithEmailAndPassword ,它在重新加载、选项卡更改等时仍然存在。但是,大约一个小时后,auth 会话似乎过期并且 currentUser 设置为 null。感觉 Firebase 控制台的某处应该有一个设置,但是在搜索之后,我什么也找不到。

任何帮助将不胜感激!

【问题讨论】:

是用户会话即将到期还是令牌? ID 令牌在一小时后过期(无法更改),但会在后台自动刷新。用户会话不会在一小时后过期。见***.com/questions/37487283/…。 我认为无论出于何种原因,令牌都不会自动刷新。该链接建议调用 firebase.auth().currentUser.getToken 手动刷新,但我不能这样做,因为 currentUser 在一小时后为空。我想我可以设置一个 55 分钟的计时器并以这种方式刷新它,但这似乎真的很骇人听闻......关于它为什么不刷新的任何想法? 用户不应在 ID 令牌到期时注销。这里还有其他事情发生。如果有大的帐户更改(用户删除、密码更改、电子邮件更改、密码重置等),用户将被注销。您是否使用firebase.auth().onAuthStateChanged 侦听器来确定用户的初始状态? 我昨晚用控制台日志设置了firebase.auth().onAuthStateChanged,但这并没有太大帮助。登录后,它会立即记录看似正常的登录状态,其中包含电子邮件、refreshToken、uid 等。刷新页面会记录相同的内容,但是一小时后,日志只返回“null”。在那之后,刷新仍然返回 null 并且取回用户数据的唯一方法是注销并重新登录。 Firebase 令牌默认设置为最长 1 小时。 【参考方案1】:

我遇到了完全相同的问题,onAuthStateChanged 总是在 1 小时后触发,并且用户已断开连接。并且firebase.auth().currentUser.getIdToken(true) 也没有帮助,所有这些都是因为......必须在 Google 控制台中为我的 Google API 密钥启用令牌服务 API。问题解决了!

进入谷歌云平台,在搜索栏中输入“Token Service API”,在结果中点击,在新页面点击“管理”,最后点击“启用API”。

【讨论】:

这就是我的解决方案!非常感谢! 你能解释一下我到底应该做什么。我应该在哪里启用 Chris Token Service API? @Leo 我添加了详细信息。谢谢 感谢您提供此信息。它已为我启用,但有时几天后我的用户由于某种原因退出。需要深入检查=)

以上是关于Firebase - 一小时后丢失身份验证会话的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter Web 中长时间使用 Firebase 后退出

1 小时后身份验证令牌无效 - Firebase 中的磁盘持久性

通过 Facebook 进行 Flutter 和 Firebase 身份验证:与设备的连接丢失

Firebase 身份验证会话未过期 [重复]

如何存储firebase身份验证会话

Firebase 令牌在 1 小时内过期后如何保留用户?