dyl*_*jha 21 firebase firebase-authentication
在我的服务器上,我在使用firebase admin sdk时看到了这些错误 .verifyIdToken()
Firebase ID令牌已过期.从您的客户端应用中获取新的令牌,然后重试
Firebase ID令牌具有"kid"声明,该声明与已知的公钥不对应.很可能ID令牌已过期,因此请从您的客户端应用获取新令牌,然后重试.有关如何检索ID令牌的详细信息,请参阅https://firebase.google.com/docs/auth/admin/verify-id-tokens.
在客户端,我在浏览器<>服务器之间的每个请求之前执行此操作:
firebase.auth().currentUser.getIdToken()
Run Code Online (Sandbox Code Playgroud)
通过阅读文档,我的理解是此函数将获得有效的,未过期的令牌,因为后台的SDK将根据需要自行刷新.或者,我可以传入true此功能以强制刷新.
为什么这个getIdToken()函数似乎是将过期的令牌发送到我的后端?
似乎要解决这个问题我的选择是:
true强制刷新每次我打电话getIdToken时间().这是不必要的昂贵,因为它会在来自浏览器<>我的服务器的请求之前从浏览器<> firebase添加整个往返网络请求的开销getIdToken()我现在的方式 - 在客户端手动解码令牌,检查到期,如果它已过期然后getIdToken(true)再次调用强制刷新并将新刷新的令牌发送到我的服务器2号是推荐/预期的处理方式吗?看来这里有些不对劲......
boj*_*eil 11
令牌通常在一小时后到期.getIdToken将刷新缓存的令牌(如果已过期).当您需要将令牌发送到服务器时,请确保始终在客户端上调用该号码.如果您缓存令牌并始终将其发送到您的后端,它将在某个时候到期.
同样,以防万一,确保您的服务器时钟同步.由于某种原因,你的时钟可能不同步.
Error: Firebase ID token has expired
Run Code Online (Sandbox Code Playgroud)
当您的设备时间错误时,您会收到此错误。还要检查您的设备时钟时间。
| 归档时间: |
|
| 查看次数: |
5876 次 |
| 最近记录: |