提问者:小点点

如何在Firebase和服务器之间共享令牌?


我的Node. js应用程序使用Firebase产品以及在App Engine中运行的服务器。因此,当用户登录时,他应该能够在两个平台上进行身份验证。为此,我使用了自定义令牌。

在服务器中,我调用了admin. auth().createCustomToken(uid)并将该令牌发送给客户端。
在客户端,我使用了fire base.auth().signInWellCustomToken(token)并登录。一切都好。

我还阅读了有关令牌exp字段的信息

令牌过期的时间,自UNIX纪元起以秒为单位。…但是,一旦您使用signInWellCustomToken()为用户签名,他们将保持登录到设备中,直到他们的会话无效或用户退出。

因此,Firebase处理令牌刷新和所有操作(如果我错了,请纠正我),我不必担心。此外,Firebase和我的应用使用相同的密钥(服务号密钥)来生成令牌。

自定义令牌是签名的JWT,其中用于签名的私钥属于Google服务号。

因此,生成的令牌在Firebase和服务器之间是兼容的。

现在,我陷入困境的地方是,我需要令牌来向App Engine服务器进行身份验证。在成功执行fire base. auth().signInWellCustomToken(token)后,如何从Firebase获取最新(未过期)令牌?

我本可以在signInWellCustomToken(token)中使用token。但这可能会在一个小时后过期。所以我想我可以依赖火力基地身份验证。

谢谢。


共1个答案

匿名用户

Firebase SDK自动刷新的短期令牌称为ID令牌,您可以通过调用user对象上的getIDToken(false)来获取它。这会为您提供当前的ID令牌,因此它可能会相对较快地过期——尽管通常不会过期至少5分钟,因为SDK此时会请求新的ID令牌。

您还可以通过调用getIDToken(true)强制SDK刷新令牌,这意味着您将获得一个有效期约为一小时的令牌。