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

Posted

技术标签:

【中文标题】Firebase 令牌在 1 小时内过期后如何保留用户?【英文标题】:How to persist user after Firebase Token expired in 1 hour? 【发布时间】:2020-02-23 11:27:46 【问题描述】:

我在我的项目中使用 Firebase,并使用 getIdToken() 方法返回令牌并验证用户身份。但是,由于令牌过期,应用程序中的用户会话总是在 1 小时后过期,我如何设法在用户会话过期后保持它?

我已经阅读了 firebase 文档和有关该问题的其他问题,似乎我必须在令牌到期后使用刷新令牌来保持会话,但我仍然不完全理解并且发现难以实施。例如,我从How to use the Firebase refreshToken to reauthenticate? 和Firebase: When should I use refreshToken? 阅读了答案,据我了解,这意味着当我们拨打电话时 .getIdToken(true) Firebase 已经管理了刷新令牌,我们不需要处理它,对吗?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

在您手动调用平台 SDK 提供的 signOut 方法之前,用户登录始终存在。您无需执行任何操作即可让刷新令牌工作 - 这一切都由 SDK 管理。

您需要做的是使用“身份验证状态侦听器”来确定刷新何时完成,因为它不是即时的。如果不使用侦听器,而是直接访问“currentUser”,则当前用户将显示为 null,直到刷新成功。离线时刷新不会成功,也不会立即刷新。

由于您没有说明您正在使用哪个平台,我无法提供相关文档的链接,但所有文档的方案都是相似的。

【讨论】:

我正在一个网站上实现它。谢谢你的回答。 firebase.google.com/docs/reference/js/…firebase.google.com/docs/auth/web/… @DougStevenson 这对于 android 上的匿名身份验证也是如此吗? (如果这很重要,我将持久性用于实时数据库。实时数据库持久性文档提到令牌已过期,所以我很困惑。)

以上是关于Firebase 令牌在 1 小时内过期后如何保留用户?的主要内容,如果未能解决你的问题,请参考以下文章

firebase 访问令牌将在 4 到 5 小时后过期

React Firebase 防止 axios 中的令牌过期

如何使用 Firebase 刷新令牌保持用户身份验证?

如何生成 24 小时后过期的唯一令牌?

登录令牌过期后 iOS Firebase 同步不起作用

GoogleAPI oauth2 刷新令牌在 1 小时后过期