【问题标题】:When shall we set FirebaseUser.getToken(Boolean forcerefresh) to true?我们什么时候应该将 FirebaseUser.getToken(Boolean forcerefresh) 设置为 true?
【发布时间】:2017-03-02 10:45:06
【问题描述】:

我的 Firebase 客户端应用程序与自定义后端服务器通信,因此我需要将 ID 令牌与每个 HTTPS 请求一起发送到我的服务器。从参考资料来看,

Should only be set to true if the token is invalidated out of band
  1. 什么时候应该将forcerefresh 布尔值设置为true
  2. 是否可以在对我的自定义服务器的每个 HTTPS 请求期间获取令牌(使用 forcerefresh 为 false)。 (当它作为任务返回时,我是否应该将它存储在我的本地缓存中,这样我就不必添加任何任务侦听器并且可以在同一个线程中处理请求)

编辑: 现在google提供了新的api,如果token过期了会自动刷新。

getIdToken(forceRefresh) returns firebase.Promise containing string

来自 Google 文档

如果当前令牌尚未过期,则返回当前令牌,否则将刷新令牌并返回一个新令牌

【问题讨论】:

  • 关于您的编辑,有人可以确认 firebase android sdk 的行为方式相同吗?

标签: android firebase firebase-authentication


【解决方案1】:

一般情况下,将 forceRefresh 设置为 false。这是推荐的行为。但是,这取决于您在做什么。 您可能希望确保您的令牌始终是最新的并且同步可用。为此,您必须在令牌过期前几分钟刷新。如果您调用 getToken(false),您将取回即将过期的缓存令牌,这是不需要的。在这种情况下,您强制刷新并更新令牌。通过这样做,您可以确保您始终同步拥有未过期的令牌。

【讨论】:

  • 我怎么知道我的令牌即将过期。我是否需要添加代码来检查它的到期时间以及它是否即将到期而不是调用 getToken(true)。
  • 目前令牌的生命周期是一个小时。您还可以使用客户端 jwt 解析器对其进行解析并检查其过期时间。
【解决方案2】:

除非您想强制刷新,否则将其设置为 false。如果您将其设置为 false,Firebase 会获取缓存的令牌(如果尚未过期)或刷新令牌并返回它(如果已过期)。

https://firebase.google.com/docs/reference/js/firebase.User#getToken

【讨论】:

    猜你喜欢
    • 2010-10-10
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2021-09-07
    • 2017-12-13
    相关资源
    最近更新 更多