firebase标志,但CustomToken已损坏
起初,就在昨天,一切都很顺利。但从今天早上开始,我就得到了这个案子。 在后端节点上,我使用auth.createCustomTokenSOME\u ID生成自定义令牌 然后,当我使用从后端获得的令牌调用客户端signInWithCustomToken时,我得到下一个错误:firebase标志,但CustomToken已损坏,firebase,firebase-authentication,Firebase,Firebase Authentication,起初,就在昨天,一切都很顺利。但从今天早上开始,我就得到了这个案子。 在后端节点上,我使用auth.createCustomTokenSOME\u ID生成自定义令牌 然后,当我使用从后端获得的令牌调用客户端signInWithCustomToken时,我得到下一个错误: { code: "auth/invalid-custom-token", message: "The custom token format is incorrect. Please check the documen
{
code: "auth/invalid-custom-token",
message: "The custom token format is incorrect. Please check the documentation."
}
在日志中有一个POST to,带有参数{returnSecureToken:true,token:MY_-GENERATED_-token},状态为400和response
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "INVALID_CUSTOM_TOKEN"
}
],
"code": 400,
"message": "INVALID_CUSTOM_TOKEN"
}
}
那么,谷歌引入了一些突破性的改变还是什么呢?我也有同样的问题。原因是令牌已过期。 Firebase SDK引发了相同的错误:对于格式错误的令牌和过期的令牌,都出现了auth/invalid custom token错误 希望错误处理很快得到改善,同时开发人员可以通过使用客户端库(如jtwdecode)检查令牌是否过期,并检查exp时间戳并与当前时间进行比较
timeSeconds=TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis());
expSeconds = timeSeconds + 60L * 60L;
并将声明设置为该值
.claim("iat", timeSeconds)
.claim("exp", expSeconds)
核查结果:
"kind": "identitytoolkit#VerifyCustomTokenResponse",
"idToken": "",
"expiresIn": "3600",
"isNewUser": true
**
管理用户会话
**
Firebase身份验证会话的寿命很长。每次用户登录时,用户凭据都会发送到Firebase身份验证后端,并交换为Firebase ID令牌、JWT和刷新令牌。Firebase ID代币寿命短,持续一小时;刷新令牌可用于检索新的ID令牌。刷新令牌仅在以下情况之一发生时过期:
用户已被删除
用户已被禁用
检测到用户的主要帐户更改。这包括密码或电子邮件地址更新等事件。
Firebase Admin SDK提供了为指定用户撤销刷新令牌的功能。此外,还提供了用于检查ID令牌吊销的API。通过这些功能,您可以更好地控制用户会话。SDK提供了添加限制以防止会话在可疑情况下使用的能力,以及从潜在令牌盗窃中恢复的机制。
在客户端,例如Angular。如果使用AngularFire2,则可以使用名为signInWithCustomTokenclientToken的命令并传递customToken。这将为您提供登录接受或拒绝
如果firebase拒绝,则接受拒绝,并使用路由将用户重定向到登录页面,或者只提供登录方式。你的电话
记住让Firebase处理JWT的解码。如果不在您的一侧显示解码,则提供更好的安全性 您在客户端上使用的项目是否与在后端生成自定义令牌的项目相同?@bojeil是的,当然。您解决了问题吗@伊利亚博伊科