在Firebase 9.0.0 API中,如何检查用户是否具有有效的Auth会话?

时间:2016-05-24 12:11:15

标签: android firebase firebase-authentication

在旧版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

我该如何处理这种情况?

提前致谢!

3 个答案:

答案 0 :(得分:3)

Firebase最新版本有一个错误,以保持令牌"新鲜"。

在此http://www.vogella.com/tutorials/AndroidListView/article.html中,Google开发人员分享了解决此问题的指南。

指南: discussion

它对我有用。

答案 1 :(得分:2)

您正在进行的检查应足以与Firebase数据库或存储进行交互,并且身份验证SDK会自动刷新令牌。

答案 2 :(得分:2)

如果未使用Firebase进行身份验证,

FirebaseAuth.getInstance()。getCurrentUser()将返回null。如果用户已退出或从未登录,则会发生这种情况。

为自定义身份验证生成的JWT服务器端的最长生命周期为60分钟。如果您在此之前尚未使用它向Firebase验证用户身份,我预计您会看到类似于您提到的错误。

尝试在令牌过期之前将令牌提交给Firebase(即生成后不到1小时)。如果您在此之前未对Firebase进行身份验证,则需要让您的服务器自定义生成另一个令牌。

有关如何将自定义令牌提交到Firebase并对用户进行身份验证的信息,请参阅https://firebase.google.com/docs/auth/android/custom-auth