2016-05-27 15 views
4
nicht zurück

Ich habe Firebase in meiner App seit mehreren Monaten erfolgreich verwendet. Ich habe gerade die Aktualisierung beendet, um die Version 9.0.0 zu verwenden, und ich habe noch ein Problem, das ich nicht herausfinden kann.Firebase-Einzelwert-Ereignis-Listener gibt

In meiner MainActivity onCreate Funktion überprüfe ich, ob der Benutzer bei Firebase angemeldet ist. Wenn der Benutzer angemeldet ist, versuche ich das Benutzerobjekt, das ich in meiner Datenbank habe, zu holen.

Dies ist die einzige Instanz in der App, bei der ich Probleme damit habe. Ich habe überprüft, dass der Benutzer angemeldet ist und die DatabaseReference auf die richtige URL verweist.

Die DatabaseReference wird erstellt, und der Hörer wird hinzugefügt, aber nichts auf dem Zuhörer immer feuert ...

FirebaseAuth auth = FirebaseAuth.getInstance(); 

    if (auth != null && auth.getCurrentUser() != null) { 
     DatabaseReference userRef = FirebaseDatabase.getInstance().getReference().child(USERS).child(auth.getCurrentUser().getUid()); 
     userRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       // Logic for success is here... 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

       // Logic for failure is here... 
      } 
     }); 
    } 

Irgendwelche Ideen, was ich falsch mache?

+0

geht es jemals in das, wenn Block? Bist du durchgetreten? – muratgu

+0

Ja. Ich bin hindurchgegangen und habe Log-Statements hinzugefügt. Es gibt die if-Anweisung ein, es erstellt den DatabaseRef, und dann wird der Listener nie ausgelöst. – Eagle11

+0

Welche Art von Authentifizierung verwenden Sie? anscheinend gibt es ein Problem mit der benutzerdefinierten Authentifizierung ... – Ymmanuel

Antwort

4

Es liegt ein Problem mit Ihrer Projektkonfiguration vor, das dazu führt, dass Firebase Auth-Tokens nicht ordnungsgemäß aktualisiert werden. Sie müssen SHA-1-Fingerabdrücke für Ihre Apps in der Firebase-Konsole hinzufügen.

Rufen Sie die Übersichtsseite des Projekts in der Firebase-Konsole auf. Wählen Sie das Einstellungsüberlaufmenü der betreffenden App und klicken Sie auf "Verwalten". Es wird eine Schaltfläche geben, um SHA-1-Werte hinzuzufügen.

Sie können SHA-1-Werte für Ihre App erhalten, indem Sie die Schritte unter this guide ausführen. Möglicherweise müssen Sie die Datei google-services.json erneut herunterladen und zur App in Android Studio hinzufügen. Dies ist jedoch nicht der Fall.

Diese ähnliche stackoverflow question als von einem Firebase-Teammitglied beantwortet enthält weitere Details, wenn Sie möchten.

0

Wenn Sie den Benutzer nicht über eine beliebige Methode der Authentifizierung Sie müssen die Regeln

{ 
    "rules": { 
     ".read": "auth == null", 
     ".write": "auth == null" 
    } 
} 

zu ändern, dass die Authentifizierung, um sicherzustellen, nicht um DB zugreifen erforderlich ist.

Verwandte Themen