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

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

任何帮助将不胜感激!

【问题讨论】:

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

标签: reactjs firebase redux firebase-authentication


【解决方案1】:

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

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

【讨论】:

  • 这就是我的解决方案!非常感谢!
  • 你能解释一下我到底应该做什么。我应该在哪里启用 Chris Token Service API?
  • @Leo 我添加了详细信息。谢谢
  • 感谢您提供此信息。它已为我启用,但有时几天后我的用户由于某种原因退出。需要深入检查=)
猜你喜欢
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 2014-04-08
  • 1970-01-01
  • 2018-12-06
相关资源
最近更新 更多