如何加快Firebase身份验证过程

Ebo*_*ike 4 android firebase firebase-authentication google-signin

我有一个安装了Firebase的Android应用程序.对于身份验证,我使用Google登录,然后使用Firebase signInWithCredential().

这有时相当快,有些时候非常慢(Google登录为2秒,Firebase为6秒,有时更长).从UX的角度来看,这是不可接受的,特别是因为每次用户启动应用程序时都会发生这种情况.

有什么办法可以加快速度吗?

简而言之,删除了所有异步处理:

result = Auth.GoogleSignInApi.silentSignIn(googleApiClient).get();
// --- That can take over two seconds ---

GoogleSignInAccount acct = result.getSignInAccount();
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
authTask = auth.signInWithCredential(credential);
// --- This can take over six seconds ---
Run Code Online (Sandbox Code Playgroud)

cod*_*101 12

身份验证时间完全取决于网络速度和Firebase后端响应时间.

每次应用程序启动时也无需重新登录用户.

FirebaseAuth.getInstance().getCurrentUser()
Run Code Online (Sandbox Code Playgroud)

除非您明确注销用户,否则不会为null

FirebaseAuth.getInstance().signOut()
Run Code Online (Sandbox Code Playgroud)

我的意思是.每次用户打开/启动应用程序而不是使用已保存的Auth实例时,您都不应该重新登录用户.

如果您想更新Auth实例以进行更新更改,请假设用户已登录,然后由于某些原因您阻止该帐户.在这种情况下,用户仍将登录并使用您的服务.为避免这种情况,您可以调用重新加载配置文件,这将比重新登录更快.

  • 哇,解决方案是如此明显,以至于我觉得自己是愚蠢的!我从来没有想过FirebaseAuth在重启后会保持其状态。事后看来,这很合理,因为Firebase将文件留在每个应用程序实例的数据目录中。恭喜您第一个被接受的答案:) (2认同)