在旧版Firebase API中,我使用“mFirebase.getAuth()。getExpires()”来验证用户会话。但是在新的Firebase 9.0.0 API中,我找不到这样的验证。
现在我正在检查Auth会话的可用性,如下所示,
public static boolean hasValidAuthToken() {
return FirebaseAuth.getInstance().getCurrentUser() != null ? true : false;
}
如果令牌过期,我该如何处理?
更新 其实我正在做自定义身份验证。在服务器端安装Firebase服务器sdk(java)。默认情况下,身份验证令牌将在1小时后过期。
令牌过期后出现以下错误
D/ConnectionRetryHelper: Scheduling retry in 398ms
D/PersistentConnection: pc_0 - Trying to fetch auth token
D/PersistentConnection: pc_0 - Error fetching token: An internal error has occured. [ Internal error. ]
D/PersistentConnection: pc_0 - Scheduling connection attempt
我该如何处理这种情况?
提前致谢!
答案 0 :(得分:3)
Firebase最新版本有一个错误,以保持令牌"新鲜"。
在此http://www.vogella.com/tutorials/AndroidListView/article.html中,Google开发人员分享了解决此问题的指南。
指南: discussion
它对我有用。
答案 1 :(得分:2)
您正在进行的检查应足以与Firebase数据库或存储进行交互,并且身份验证SDK会自动刷新令牌。
答案 2 :(得分:2)
FirebaseAuth.getInstance()。getCurrentUser()将返回null。如果用户已退出或从未登录,则会发生这种情况。
为自定义身份验证生成的JWT服务器端的最长生命周期为60分钟。如果您在此之前尚未使用它向Firebase验证用户身份,我预计您会看到类似于您提到的错误。
尝试在令牌过期之前将令牌提交给Firebase(即生成后不到1小时)。如果您在此之前未对Firebase进行身份验证,则需要让您的服务器自定义生成另一个令牌。
有关如何将自定义令牌提交到Firebase并对用户进行身份验证的信息,请参阅https://firebase.google.com/docs/auth/android/custom-auth。