Firebase身份验证/无效自定义令牌

dyl*_*jha 5 firebase firebase-authentication

我正在尝试使用Firebase管理员SDK生成自定义令牌

const uid = '91f0bf4c-3e3c-441c-a21d-6a7fee341db5'
firebaseAdmin.auth().createCustomToken(uid)
Run Code Online (Sandbox Code Playgroud)

使用此特定的uid有时,自定义令牌会起作用,而有时在客户端上使用authWithCustomToken()时,会出现此错误:

“ auth / invalid-custom-token”自定义令牌格式不正确。请检查文档。”

有什么办法可以调试令牌的运行情况?从表面上看,“好”令牌和“坏”令牌看起来相同:

它们分为3部分,中间用 .

  • 第一部分长度为36个字符,在工作情况和损坏情况下都完全相同
  • 在两个示例中,第二部分均为392个字符,它们几乎完全相同
  • 这两个示例的第三部分长342个字符,并且有所不同。

dyl*_*jha 9

令牌已过期。Firebase SDK 会引发相同的错误:auth/invalid-custom-token格式错误的令牌和过期令牌均出现错误。

希望错误处理很快得到改进,同时开发人员可以使用jwt 解码等客户端库检查令牌是否过期,并检查“exp”时间戳并与当前时间进行比较。


boj*_*eil 8

您可以访问https://jwt.io并解码您的自定义令牌。它应该是这样的:

{
  "uid": "some-uid",
  "iat": 1500147255,
  "exp": 1500150855,
  "aud": "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
  "iss": "firebaseserviceaccount@YOUR_PROJECT_ID.iam.gserviceaccount.com",
  "sub": "firebaseserviceaccount@YOUR_PROJECT_ID.iam.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)

YOUR_PROJECT_ID 应该与您的客户端项目中的相同项目相匹配。