2017-09-17 1 views
5

私はアプリを作っています.Firebaseのデータベースと認証サービスに問題があります。Firebase認証中にしばらくしてからデータベースのリスナーが起動しない

私は(Firebase Authを使用して)認証され、アプリケーションを使用している間に、がデータベース内のデータであっても、データベースのValueEventListenersが呼び出されていないようです。

私は自分のリスナーを追加しているどのように

:私が試した

FirebaseDatabase 
     .getInstance() 
     .getReference() 
     .child("my_child") 
     .addValueEventListener(new ValueEventListener() 
     { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) 
      { 
       Log.d("App", "onDataChange"); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) 
      { 

      } 
     }); 

スタッフ:

  • は再度ログイン読みで結構です後(データベースルールを確認する - 認証されながら、しかし、シミュレートしても合格読み込み&未認証)
  • DatabaseReferencesのkeepSynced(true)
  • アクティビティのonCreateインスタンスにリスナーを追加するアプリケーションののonCreate
  • のEADは、すべてのヘルプははるかに高く評価されるだろう

を再起動同期

  • をトリガするために、データベース内のデータを更新/追加/削除。

  • +0

    エラーがありますか? –

    +0

    ログカットはまったく出力されません。私は、リスナーのすべての可能な行にブレークポイントを設定しました。再起動するたびに発生します。本当に本当に変です。 – Ilan321

    +0

    あなたのfirebaseデータベース構造を表示することができます – Salman500

    答えて

    3

    ので、どうやら問題は、「トークンサービス」と呼ばれるAPIが私のGoogle APIのダッシュボードで有効になっていなかったということでした。 Firebaseサポート(!みんなありがとう)から役立つ電子メールへの
    おかげで、私はFirebaseDatabase.getInstance().setLogLevel(Logger.Level.DEBUG);

    ローを呼び出し、見よによるデバッグロギングをオンにしました:D/PersistentConnection: pc_0 - Error fetching token: An internal error has occurred. [ �Token Service API has not been used in project <project-id> before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/securetoken.googleapis.com/overview?project=<project-id> then retry.

    をので、APIを有効にすることにより、固定しているようですエラー!

    1

    子データベースへの参照を作成し、必要に応じてカスタムチャットクラスを作成します(基本的にはファイアベースに表示されるもの)。 addChildEventListenerは、my_childで発生したすべての変更を提供する必要があります。これがあなたを助けることを願ってください。

    mFirebaseRef = new Firebase("https://yourapp.firebaseio.com/").child("my_child"); 
     
    
     
    /** 
     
         * Firebase - Receives message 
     
         */ 
     
         mFirebaseRef.addChildEventListener(new ChildEventListener() { 
     
          @Override 
     
          public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     
           if (dataSnapshot != null && dataSnapshot.getValue() != null) { 
     
            try{ 
     
    
     
             Chat model = dataSnapshot.getValue(Chat.class); 
     
    
     
    
     
             mChats.add(model); 
     
             mRecyclerView.scrollToPosition(mChats.size() - 1); 
     
             mAdapter.notifyItemInserted(mChats.size() - 1); 
     
            } catch (Exception ex) { 
     
             Log.e(TAG, ex.getMessage()); 
     
            } 
     
           } 
     
          } 
     
    
     
          @Override 
     
          public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
     
    
     
          } 
     
    
     
          @Override 
     
          public void onChildRemoved(DataSnapshot dataSnapshot) { 
     
    
     
          } 
     
    
     
          @Override 
     
          public void onChildMoved(DataSnapshot dataSnapshot, String s) { 
     
    
     
          } 
     
    
     
          @Override 
     
          public void onCancelled(FirebaseError firebaseError) { 
     
    
     
          } 
     
         });

    関連する問題