firebase标志,但CustomToken已损坏

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

起初,就在昨天,一切都很顺利。但从今天早上开始,我就得到了这个案子。 在后端节点上,我使用auth.createCustomTokenSOME\u ID生成自定义令牌

然后,当我使用从后端获得的令牌调用客户端signInWithCustomToken时,我得到下一个错误:

{
  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是的,当然。您解决了问题吗@伊利亚博伊科