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
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. –
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
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. –