当当前访问令牌过期时,我如何获取新的访问令牌,google firebase auth?

发布于 2025-01-18 15:51:07 字数 397 浏览 2 评论 0原文

我在客户端使用firebase,并在服务器上使用firebase-admin。 在客户端,我使用SignWithPopup使用Google帐户登录我的Web应用程序,然后接收访问,到期时间,在客户端进行刷新。

stsTokenManager:{
  accessToken: "eyJhbGciOiJzGcaUzI1JKKIsIzxcXzStpZC... ,
  expirationTime: 1648809531166 ,
  refreshToken: "AIwxAjDfh8_SkckvoSsASxXllMkIX8GBNx...

我在firebase-admin lib中使用验证函数进行验证令牌是由客户发送的,但是直到令牌过期(1H)之前,我无法使用此令牌。 当前访问令牌已过期时,我如何获得新的访问权限?

I use firebase at client and use firebase-admin at server.
At client i use signInWithPopUp to sign in to my web app with google account, then receive accessToken, expirationTime, refreshToken at client.

stsTokenManager:{
  accessToken: "eyJhbGciOiJzGcaUzI1JKKIsIzxcXzStpZC... ,
  expirationTime: 1648809531166 ,
  refreshToken: "AIwxAjDfh8_SkckvoSsASxXllMkIX8GBNx...

And i use verify function in firebase-admin lib for verify token was send by client, but until token has expired(1h), i can't use this token.
How i get new accesstoken when current access token has expired?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苍白女子 2025-01-25 15:51:07

您不必读取用户的 idToken,将其存储在任何地方或自行刷新。相反,您只需要使用 getIdToken()获取用户的 ID Token。如果令牌已过期,Firebase SDK 将刷新并返回新令牌或返回现有令牌。您可以在每次向 API 发出请求之前使用 getIdToken()

const userToken = await firebase.auth().currentUser.getIdToken();

// pass userToken to in the API request
// API request here

You don't have to necessarily have to read user's idToken, store it anywhere or refresh it yourself. Instead you just need to use getIdToken() to get user's ID Token. If the token has expired, Firebase SDK will refresh and return a new token or return existing one. You can use getIdToken() before every request to your API.

const userToken = await firebase.auth().currentUser.getIdToken();

// pass userToken to in the API request
// API request here
毁虫ゝ 2025-01-25 15:51:07

您可以使用以下方法获取 oauth 访问令牌:

const provider = new GoogleAuthProvider()
provider.addScope(...)

...

const result = await signInWithPopup(auth, provider)
const credential = GoogleAuthProvider.credentialFromResult(result)
console.log(credential.accessToken)

我不知道如何刷新该令牌。

You can use the following to obtain the oauth access token:

const provider = new GoogleAuthProvider()
provider.addScope(...)

...

const result = await signInWithPopup(auth, provider)
const credential = GoogleAuthProvider.credentialFromResult(result)
console.log(credential.accessToken)

I don't know how to refresh that token.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文