刷新 Firebase 令牌

3
我正在使用Web Firebase JavaScript进行电子邮件和密码认证。此过程会生成一个令牌,我使用该令牌在我的Node.js后端上使用Firebase-Admin进行验证。一旦生成了此令牌,我将其存储在浏览器的本地/会话存储中。
前端是AngularJs,我拦截http请求以注入存储在浏览器中的令牌。
这很好用,但是一段时间后,该令牌会过期。那么,在将其发送到Node.js API之前,最好的刷新令牌的方法是什么?
注意:每个请求都应请求currentUser.getToken()吗?
1个回答

10

currentUser.getIdToken() 仅在当前令牌过期时 刷新令牌!因此,它不会创建不必要的流量或请求到 Firebase!

firebase.auth().currentUser.getIdToken(true) // here we force a refresh
.then(function(token) {
  // ... do stuff!
}).catch(function(error) {
  if (error) throw error
});

你会发现我将 true 添加为 getIdToken() 函数的参数。这将强制刷新!

这是 getIdToken() 函数的Firebase文档

希望能对你有所帮助!


4
我认为你说反了。文档中指出,如果forceRefresh为true,则它将在过期之前刷新。跳过forceRefrsh参数(默认为false)会返回相同的令牌,直到它过期,然后再提供一个新的。 - undefined
看起来你不能再指定那个参数了.. 我正在使用4.4.0 JS SDK - undefined
@jsnns 所以没有任何强制刷新令牌的可能性吗?我的应用有4种登录方式(Fb,Google,SMS,Email),一旦用户在同一设备上更改了令牌,仍然没有更新。我猜我需要看看自定义令牌方面的问题? - undefined
@Fikret 最新版本的Firebase文档显示forceRefresh参数仍然存在。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接