javascript - 何时为 API 请求刷新过期的 Firebase3(Web) token

标签 javascript firebase firebase-authentication

我目前正在使用 firebase.auth().createUserWithEmailAndPassword(email, password) 对用户进行身份验证,并使用来自 firebase.auth().currentUser.getToken(true ) 用于 API 请求。但是,Firebase 会在 1 小时后使 token 失效。所以我想知道我应该如何刷新 token 。我是否必须使用自己的自定义 token 生成才能正确使用 token 刷新?

我目前正在使用它,虽然我只测试过一次,但它似乎有效。

firebase.auth().onAuthStateChanged(function () {//在这里刷新 token })

我一遍又一遍地阅读文档,但没有看到任何关于刷新 Web 应用程序 token 的提及。我还查看了 firebase 的示例存储库,但没有看到有人使用 onAuthStateChanged 来做这样的事情。所以我想知道这是客户端 token 刷新的正确方法吗?我认为这可能不是最佳方法的原因是因为这可能存在竞争条件。例如,如果 token 过期并且我在刷新 token 之前使用旧 token 发送 API 请求,那么我的 API 请求将因 token 过期而出现身份验证失败。

这与 Firebase DB HTTP API Auth: When and how to refresh JWT token? 中的问题非常相似但在问题是针对使用 Python 且未提及 onAuthStateChanged 的意义上略有不同。

谢谢!

最佳答案

对于那些进入这篇文章寻找答案的人。您可以在所有 API 调用之前获取 token 以获取 token 。

// Make sure you don't pass in true which will always refresh the token
firebase.auth().currentUser.getToken() 

Firebase 将在内部确定 token 是否需要刷新或从缓存中获取。如果您注意到 Firebase 在 token 过期之前不会发送任何网络请求。

关于javascript - 何时为 API 请求刷新过期的 Firebase3(Web) token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38965681/

相关文章:

javascript - 使用后退按钮时,Rails 3.1 返回原始 Javascript 代码

javascript - 如何使用 ES6 语法将选择选项的值转换为简单数组?

firebase - 使用 Firebase 托管托管 Google Cloud Run 会引发混合内容错误

javascript - 与 firebase onDisconnect react native

android - 无需注册 Firebase 数据库即可手动添加用户

用于将值从复选框传递到查询字符串的 JavaScript 无法正常工作

javascript - 在我到达链接之前下拉菜单消失了

swift - Firestore 数据库 - 文档未在集合中返回

firebase - 从Cloud Firestore检索仅一个用户的文档,然后将其推送到Widget Flutter中

android - 我可以自定义 firebase OTP 数字(默认 6 到 4)吗?