firebase signInWithCustomToken坏了

时间:2017-07-14 03:59:05

标签: firebase firebase-authentication

起初,就在昨天一切正常。但是从今天早上起,我得到了这个案子。 在后端(NodeJS),我使用auth().createCustomToken(SOME_ID)

生成自定义标记

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

{
  code: "auth/invalid-custom-token",
  message: "The custom token format is incorrect. Please check the documentation."
}

在日志中有https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=MY_API_KEY的POST,其中params {returnSecureToken:true,token:MY_GENERATED_TOKEN}状态为400且响应

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "INVALID_CUSTOM_TOKEN"
   }
  ],
  "code": 400,
  "message": "INVALID_CUSTOM_TOKEN"
 }
}

那么,Google是否介绍了一些重大变化或者是什么?

2 个答案:

答案 0 :(得分:0)

**

管理用户会话

** Firebase身份验证会话使用寿命很长。每次用户登录时,用户凭据都会发送到Firebase身份验证后端,并交换Firebase ID令牌(JWT)和刷新令牌。 Firebase ID令牌短暂且持续一小时;刷新令牌可用于检索新的ID令牌。仅当出现以下情况之一时,刷新令牌才会过期:

  • 用户已删除
  • 用户已停用

检测到用户的主要帐户更改。这包括密码或电子邮件地址更新等事件。 Firebase Admin SDK提供了撤消指定用户的刷新令牌的功能。此外,还提供了用于检查ID令牌撤销的API。借助这些功能,您可以更好地控制用户会话。 SDK提供了添加限制以防止会话在可疑情况下使用的功能,以及从潜在令牌盗窃中恢复的机制。 https://firebase.google.com/docs/auth/admin/manage-sessions 在客户端,如Angular。如果使用AngularFire2,则可以使用名为signInWithCustomToken(clientToken)的命令并传递customToken。这将为您提供登录或拒绝的接受。

如果firebase拒绝,则取消拒绝并使用路由将用户重定向到登录页面或仅提供登录方式。你的来电。

请记住让Firebase处理JWT的解码。如果您不显示解码,则提供更好的安全性。

答案 1 :(得分:-1)

我遇到了同样的问题。原因是令牌已过期。 Firebase SDK会针对格式错误的令牌和过期的令牌发出相同的错误:auth / invalid-custom-token错误。

希望错误处理很快得到改善,同时开发人员可以通过使用像jtw decode这样的客户端库并检查" 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 

stackoverflow.com/questions/45110441/firebase-auth-invalid-custom-token