问题 我们何时将FirebaseUser.getToken(Boolean forcerefresh)设置为true?


我的Firebase客户端应用程序与自定义后端服务器通信,因此我需要发送 ID 对我的服务器的每个HTTPS请求进行令牌。从参考,

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

编辑: 现在谷歌提供了新的api,如果它已过期将自动刷新令牌。

getIdToken(forceRefresh) returns firebase.Promise containing string

来自Google文档

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


859
2017-10-20 12:22


起源



答案:


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


7
2017-10-20 18:53



我怎么知道我的令牌即将到期。我是否需要添加代码来检查其到期时间以及它是否即将过期而不是调用getToken(true)。 - Bikash
目前,令牌生命周期为一小时。您还可以使用客户端jwt解析器解析它并检查它的到期时间。 - bojeil


答案:


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


7
2017-10-20 18:53



我怎么知道我的令牌即将到期。我是否需要添加代码来检查其到期时间以及它是否即将过期而不是调用getToken(true)。 - Bikash
目前,令牌生命周期为一小时。您还可以使用客户端jwt解析器解析它并检查它的到期时间。 - bojeil


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

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


3
2017-12-08 14:00