2017-10-22 3 views
3

Firebaseでサポートされているストレージを搭載したAndroidアプリがあります。認証のために、私はGoogleのサインインを使用しており、FirebaseのsignInWithCredential()が続きます。Firebase認証プロセスを高速化する方法

非常に遅い場合もあります(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 --- 

答えて

4

認証時間が完全にネットワーク速度及びFirebaseバックエンドの応答時間に依存します。

また、アプリが起動するたびにユーザーを再ログインする必要はありません。あなたが明示的に私はそれで何を意味

FirebaseAuth.getInstance().signOut() 

でユーザーをサインアウトしない限り、

FirebaseAuth.getInstance().getCurrentUser() 

はnullになりません。ユーザがアプリケーションを起動/起動するたびに、ログインしたAuthインスタンスを使用する代わりに、ユーザにログインする必要はありません。

新しい変更のためにAuthインスタンスを更新する場合は、ユーザーがログインしていて、何らかの理由でそのアカウントをブロックしたとします。その場合、ユーザーは引き続きログインしてサービスを使用します。これを避けるには、再ログインよりも速いプロファイルを再ロードすることができます。

+1

うわー、解決法はとても鮮明で、私は正当に愚かだと感じます!私は、FirebaseAuthが再起動後も状態を保持することは一度も考えなかった。後見では、Firebaseは各アプリケーションインスタンスのデータディレクトリにファイルを残しているので、理にかなっています。おめでとうございます。 – EboMike

関連する問題