6

Ich verwende Firebase UI Auth, um die E-Mail-Anmeldung in meiner App zu verarbeiten, und ich habe die Festplattenpersistenz aktiviert, sodass auf die Daten offline zugegriffen werden kann. Aber nachdem ich mich eine Stunde in der App angemeldet habe, erhalte ich diese Warnung im Logcat.Ungültiges Authentifizierungstoken nach 1 Stunde - Festplattenpersistenz in Firebase

W/PersistentConnection: pc_0 - Auth token revoked: expired_token (Auth token is expired.) 
W/PersistentConnection: pc_0 - Authentication failed: invalid_token (Invalid claim 'kid' in auth header.) 
W/PersistentConnection: pc_0 - Authentication failed: invalid_token (Invalid claim 'kid' in auth header.) 
... repeatedly 
... and sometimes 
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found. 

Als ich diese Nachricht empfangen, kann die App noch keine Feuerbasis speichern/abrufen neue uncached Datenoperation, wenn ich aus/klarer Daten unterschreiben und dann wieder anmelden. Dann trat das Problem nach etwa einer Stunde nach der Anmeldung wieder auf. Ich folgte diesem token refresh troubleshooting guide (fügte meinen Debug- und Produktionsschlüssel SHA1 sowohl zur Firebase- als auch zur Google-API-Konsole hinzu) und behebt dies nicht. Ich habe das letzte google-services.json von der Firebase-Konsole in meinem Projekt verwendet.

ich bin schon auch neueste Firebase SDK and Play Services-Bibliothek

compile 'com.google.android.gms:play-services-auth:9.2.1' 
compile 'com.google.firebase:firebase-core:9.2.1' 
compile 'com.google.firebase:firebase-database:9.2.1' 
compile 'com.google.firebase:firebase-auth:9.2.1' 
compile 'com.firebaseui:firebase-ui-auth:0.4.3' 

Ich konnte die Persistenz in der Application Klasse.

public class Application extends android.app.Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    } 
} 

Irgendwelche Ideen? Fühlen Sie sich frei zu kommentieren, wenn Sie mehr Klärung benötigen oder wenn ich nicht genügend Informationen zur Verfügung stelle. Danke

+0

Es ist eine lange Geschichte, aber können Sie das Datum/die Uhrzeit auf Ihrem Gerät überprüfen, um sicherzustellen, dass es richtig eingestellt ist? Es kann gelegentlich zu Token-Problemen kommen, wenn Ihr Gerät auf eine falsche Zeit eingestellt ist. –

+0

Es ist "automatisch" eingestellt, also sollte es korrekt sein (basierend auf der Internet-Zeit). Ich weiß nicht, ob das etwas mit der Firebase-Ui-Bibliothek zu tun hat. Vielen Dank für Ihren Kommentar, jede andere Lösung, die ich ausprobieren könnte? :) – Wilik

+0

Nachdem sich der Benutzer anmeldet, können Sie ein neues Firebase Auth-Token abrufen, indem Sie FirebaseUser.GetToken (true) aufrufen und das "kid" im Tokenkopf ausgeben? Firebase Auth Token ist ein Json Web Token (JWT) und Sie können https://jwt.io/ verwenden, um die Felder in einem JWT zu sehen. –

Antwort

1

Das Kind 22fb7e6f95c657f4407e04e97c984bb6dbbcfeb3 nicht vom Server Firebase erkannt wird. getToken() sollte auf jeden Fall unterschiedliche Tokens zurückgeben, wenn die E-Mails des Accounts unterschiedlich sind. Bitte senden Sie ein Ticket an Firebase, einschließlich der gesamten Token-Nutzlast aus beiden Apps.

+0

ok sicher, ich werde einen weiteren Test durchführen und dann ein Ticket an den Firebase-Support senden, wenn das Problem weiterhin besteht. Vielen Dank! – Wilik

1

In Firebase 3, die maximale Lebenszeit eines JWT ist 60 Minuten. Nach 1 Stunde müssen Sie das Zugriffstoken neu generieren. Wie für den ungültigen Anspruch "Kind", müssen Sie keine Kid Nutzlast zu Ihrem JWT übergeben.

HINWEIS: Das Problem, mit dem Sie konfrontiert werden, ist aufgrund der jüngsten Änderungen an der JWT-Struktur und dem Arbeitsablauf. Ich hatte die gleichen Probleme - ich habe meinen Code gemäß den neuen JWT-Spezifikationen überarbeitet und die Dinge begannen zu arbeiten.

+0

Hallo, danke für deine Antwort :) Ich habe mit dem JWT nichts gemacht, weil ich das Firebase SDK und die Bibliothek (Firebase-UI) verwende, um den Authentifizierungsteil zu bearbeiten.Das Problem trat nur auf, wenn ich beide Apps auf einem Gerät installiert und mich in beiden Apps angemeldet habe. Jetzt existiert das Problem nicht mehr, wahrscheinlich seit ich das SDK auf 9.4.0 aktualisiert habe. – Wilik