0

私はFirebase(Udacity)での私の最初のコースを通過すると、アプリがオフラインで開始されたときにこのコードは無限ループに陥るFirebaseUI認証をオフライン

private FirebaseAuth mFirebaseAuth; 
private FirebaseAuth.AuthStateListener mAuthStateListener; 
.... 
    mAuthStateListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       // User is signed in 
       onSignedInInitialize(user.getDisplayName()); 
      } else { 
       // User is signed out 
       onSignedOutCleanup(); 
       startActivityForResult(
         AuthUI.getInstance() 
           .createSignInIntentBuilder() 
           .setIsSmartLockEnabled(false) 
           .setProviders(
             AuthUI.EMAIL_PROVIDER, 
             AuthUI.GOOGLE_PROVIDER) 
           .build(), 
         RC_SIGN_IN); 
      } 
     } 
    }; 

@Override 
protected void onResume() { 
    super.onResume(); 
    mFirebaseAuth.addAuthStateListener(mAuthStateListener); 
} 

この実装Firebase Authのようなコードを持っています。

onResume - > onAuthStateChanged-> startActivityForResult-> onActivityResult(ErrorCodes.NO_NETWORKで失敗) - > onResume私はAndroidのスマートを使用してログインできるように

がFirebaseUI-Authのログイン画面にオフラインで取得する方法がありますロック。または、少なくとも、上記のように無限ループを防ぐ?

追加の詳細が必要な場合はお知らせください

+0

簡単な方法は、firebase-UIを使用せずに独自の認証UIを作成することです –

答えて

1

ユーザーを認証するにはアクティブな接続が必要です。 Firebaseがサーバに接続せずにユーザを認証する方法はありません。

これを処理する1つの方法は、ユーザーのデバイスがconnected to the networkおよび/またはconnected to Firebaseの場合にのみログインダイアログを表示することです。

関連する問題