我的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
。但这可能会在一个小时后过期。所以我想我可以依赖火力基地身份验证。
谢谢。
Firebase SDK自动刷新的短期令牌称为ID令牌,您可以通过调用user
对象上的getIDToken(false)
来获取它。这会为您提供当前的ID令牌,因此它可能会相对较快地过期——尽管通常不会过期至少5分钟,因为SDK此时会请求新的ID令牌。
您还可以通过调用getIDToken(true)
强制SDK刷新令牌,这意味着您将获得一个有效期约为一小时的令牌。