4

Firebase Api 9. +を使用してAndroidアプリケーションを作成しています。Firebase onDataChangeは、しばらくしてからオープニングアプリケーションと呼ばれていません。

私はFirebase認証とデータベースを使用しています。

私のアプリにアクセスしてログインすると、すべてうまく行き、valueEventListenersによってデータが正しく取得されます。

私の問題は、私はいくつかの時間後に私のアプリにアクセスしたときに起動し、それがすでにログインされています。

認証が確認されているようだが、私のリスナーのどれがトリガされていないと何も取得されていないようにみえます。

私のアプリケーションを正常に動作させるには、もう一度ログアウトして再度ログインする必要があります。

「セッションの期限が切れている」問題なのか、自分のコードに書き忘れたのか分かりません。ここで

は私valueEventListenersのいずれかです。

DatabaseReference myFirebase = FirebaseDatabase.getInstance().getReference(); 
hairDresserFirebase = myFirebase.getReference("hairDressers"); 
hairDresserFirebase.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot snapshot : dataSnapshot.getChildren()){ 
      HairDresser hd = snapshot.getValue(HairDresser.class); 
      if (hairDresserList.contains(hd)) hairDresserList.remove(hd); 
      hairDresserList.add(hd); 
     } 
     mRecyclerView.getAdapter().notifyDataSetChanged(); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}); 

他は参考のためにのみ変更されます。

これらはすべて異なるフラグメントのonCreateView()メソッド内にあります。

これは、ユーザーがすでにログインしているかどうかを確認するために私のスプラッシュ活動ののonCreate()メソッドをint実行されるコードです:活動における私のログはユーザーがログインしていない場合にのみ起動している間に

mAuth = FirebaseAuth.getInstance(); 
mAuthListener = new FirebaseAuth.AuthStateListener() { 
    @Override 
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
     FirebaseUser user = firebaseAuth.getCurrentUser(); 
     if (user == null) return; 
     authenticated = true; 
    } 
}; 

電子メールとパスワードまたはFacebookでログインする完全な手順を実行し、正常に動作します。

私はこの問題を解決するための何かを見つけることができませんでした。ユーザーがアプリケーションを開くたびに再認証を強制したくありません。

私を助けてください:)

+0

** 1 ** ** myFirebase **リファレンスの減速度を追加できますか? ** 2。**アプリケーションをデバッグしましたか?あなたは** onDataChange **と** onCancelled **が呼び出されていないと確信していますか?何が呼び出されたのか、何がなかったのかを正確に見るためには、あらゆるメソッドとあらゆる* if *文でLog printを追加することをお勧めします。 –

+0

1.私は宣言を追加しました。 2.はい、どこにでもログを追加しました。何も印刷されませんでした。 –

+0

firebase:9.0.2で電子メール/パスワード認証を使用するのと同じ問題があります。 – Blodhgard

答えて

2

をあなたはおそらくFirebaseとの接続を失います。あなたは、接続を監視するために、あなたの活動にこのコードを実行することでこれを確認することができます

DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected"); 
    connectedRef.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      boolean connected = snapshot.getValue(Boolean.class); 
      if (connected) { 
       System.out.println("connected"); 
      } else { 
       System.out.println("not connected"); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError error) { 
      System.err.println("Listener was cancelled"); 
     } 
    }); 

FYI - Firebaseは現在、Androidの認証で問題を抱えているし、解決策に取り組んでいます。 Firebase Statusダッシュボードを参照してください:https://status.firebase.google.com/incident/Authentication/16001

だから、その問題が解決するまで待つことをお勧めします。私はまたsimilar problemを経験しているし、その間に本当に多くのことをしないが、待つ。 希望に役立ちます。

+0

ありがとう、私はあなたのコードを試して、それは "接続されていない"を印刷します。あなたと同じ結果ですか?もしそうなら、それは本当にFirebaseのバグかもしれません。そうでなければ、私の問題は解決しません。 –

+0

私の場合も同じ結果です。私はバグレポートを提出しました。だから、現在彼らからの返事を待っている。 –

+0

Firebaseは現在動作しているようですが、あなたのコードは何が起こるかもしれないという考えを「接続されていない」として記録しますか? –

関連する問題