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无法刷新令牌!
我的解决方法是,在每次成功获取令牌时在本地维护"最后令牌获取时间"信息,以便我们可以在一小时后手动刷新令牌.
您可以参考此问题日志获取更多信息,
更新:
谷歌更新了他们的文件
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)
希望这会对你有所帮助!
Bab*_*tel -7
您可以使用此代码获取刷新令牌
FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)
FirebaseInstanceId是我的班级名称,根据您的要求更改它。
| 归档时间: |
|
| 查看次数: |
10585 次 |
| 最近记录: |