如何在Firebase 3.xx中处理自定义firebase令牌到期

Var*_*a P 14 android firebase firebase-authentication

我使用" signInWithCustomToken() "来验证firebase用户.

此令牌将在1小时后到期.

Firebase建议令牌到期时间为1小时.如果我们在使用"php-jwt"库创建自定义令牌时修改过期,则firebase会抛出异常"自定义令牌格式不正确.请查看文档".

在搜索解决方案时,我发现以下主题 - " Firebase Android身份验证失败:expired_token(身份验证令牌已过期) "

但是" onTokenRefresh() " 返回的刷新令牌对我不起作用.

刷新此自定义令牌的过程是什么?

要么

有没有办法将手动到期设置为自定义令牌?

Kar*_*i R 14

Firebase自定义令牌生成存在限制.Firebase自定义身份验证令牌限制为最大1Hr(3600秒).

exp令牌到期的时间(以秒为单位).它可以比iat晚3600秒.

如果auth令牌每小时到期,我们很难一直维持有效会话:(

当我们使用默认的Auth提供商(Google,Facebook,Email ..); 默认情况下,Firebase SDK会负责刷新您的Auth令牌.但在自定义身份验证中,Firebase SDK需要联系第三方服务器以获取新令牌.这里只有SDK无法刷新令牌!

我的解决方法是,在每次成功获取令牌时在本地维护"最后令牌获取时间"信息,以便我们可以在一小时后手动刷新令牌.

您可以参考此问题日志获取更多信息,

  1. https://github.com/firebase/quickstart-android/issues/31
  2. 在Firebase 9.0.0 API中,如何检查用户是否具有有效的Auth会话?

更新:

谷歌更新了他们的文件

exp(到期时间):自UNIX时期以来,令牌到期的时间(以秒为单位).它可以比iat晚3600秒.(注意:这仅控制自定义令牌本身到期的时间.但是一旦您使用signInWithCustomToken()签署用户,他们将保持登录到设备,直到他们的会话无效或用户退出.)

文档所述,自定义JWT令牌对max 1Hr有效; 所以在它过期之前,请使用Firebase对您的用户进行身份验证.在那届会议之后将保持活跃; 它不会过期!

您可以使用以下方法确保用户具有有效会话,

public static boolean hasValidAuthToken() {
    return FirebaseAuth.getInstance().getCurrentUser() != null ? true : false;
}
Run Code Online (Sandbox Code Playgroud)

希望这会对你有所帮助!


Jer*_*use 9

如果您正确设置,SDK 将负责保持令牌最新。有关更多信息自定义令牌仅用于启动 SESSION。因此,您必须有一个小时才能使用自定义令牌登录。登录并正确设置 Firebase 管理员帐户和应用配置后,SDK 可以与 Firebase 后端来回通信以保持令牌最新。使用 FirebaseAuth.signout() 注销后,如果超过 1 小时,您将需要一个新的自定义令牌才能重新登录。


Bab*_*tel -7

您可以使用此代码获取刷新令牌

FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)

FirebaseInstanceId是我的班级名称,根据您的要求更改它。