如何始终获取最新的Firebase身份验证令牌

如何始终获取最新的Firebase身份验证令牌,firebase,firebase-authentication,jwt,token,Firebase,Firebase Authentication,Jwt,Token,目前我正在使用这段代码获取firebase的最新身份验证令牌,我在Apollo或URQL的头中使用它来查询其他要验证的内容 async getToken():Promise{ 返回等待新承诺((解决:任何,拒绝:任何)=>{ this.afa.onAuthStateChanged((用户:any)=>{ 如果(用户){ user.getIdToken(true)。然后((token:string)=>{ 解析(令牌); },(e:any)=>拒绝(e)); } }); }); } 我使用get

目前我正在使用这段代码获取firebase的最新身份验证令牌,我在Apollo或URQL的头中使用它来查询其他要验证的内容

async getToken():Promise{
返回等待新承诺((解决:任何,拒绝:任何)=>{
this.afa.onAuthStateChanged((用户:any)=>{
如果(用户){
user.getIdToken(true)。然后((token:string)=>{
解析(令牌);
},(e:any)=>拒绝(e));
}
});
});
}
我使用
getIdToken(true)
始终确保获得有效的令牌,因为令牌在一小时后过期,并且自定义声明可能会在某个时间更新

然而,我的代码每次都会得到一个新的令牌,而实际上我只需要在旧令牌过期时获得一个新令牌,或者令牌的自定义声明中有新信息

我是否应该在onIdTokenChanged()中使用一些?firebase是否会自动将所有这些存储在firebase localstoreage数据库(IndexedDB)中,还是应该使用某种形式的localstorage并计算过期时间

基本上,减少令牌刷新次数以加快我的应用程序而不是每次都获取新令牌的最佳方法是什么

谢谢


J

除非您使用带有REST API的自定义解决方案,否则firebase客户端模块将在旧的授权令牌过期时自动使用刷新令牌刷新授权令牌

至于更新自定义声明,如果您调用云函数,则必须通过服务器响应等方式与客户端应用程序进行通信;如果您基于“外部”条件进行更新,则必须调用用户订阅的实时数据库侦听器