update - Firebase para Android-W/PersistentConnection: pc_0-Las credenciales de autenticación proporcionadas no son válidas
update firebase user android (2)
Estoy usando Firebase (versión 10.0.0) en mi proyecto de Android y enfrenté el siguiente problema con la base de datos de Firebase:
Condición previa: el usuario ha iniciado sesión a través de Firebase Auth con la cuenta de Google ( FirebaseAuth.getInstance (). GetCurrentUser () devuelve un valor no nulo).
- En el método onCreate de la actividad principal, leí algunos valores de la base de datos de Firebase:
FirebaseDatabase.getInstance() .getReference() .child(NODE_USERS).child(user.getUid()).child(NODE_DICTIONARY_VERSION) .addListenerForSingleValueEvent(...);
- Funciona bien. Pero después de un tiempo, el método descrito anteriormente va a algún tipo de bucle sin fin (sin errores, no en la llamada cancelada en ValueEventListener ). También aparece el siguiente mensaje en el registro:
W/PersistentConnection: pc_0 - Provided authentication credentials are invalid. This usually indicates your FirebaseApp instance was not initialized correctly. Make sure your google-services.json file has the correct firebase_url and api_key. You can re-download google-services.json from https://console.firebase.google.com/
Después de eso, todas las demás llamadas a la base de datos de Firebase (lectura, escritura, eliminación, etc.) tampoco funcionan.
Para arreglar esto intenté
- hacer un inicio de sesión silencioso en el inicio de la aplicación antes de acceder a la base de datos de Firebase:
FirebaseAuth.getInstance().getCurrentUser() .reauthenticate(credential).addOnCompleteListener(...);
- reconectarse con la base de datos de Firebase:
FirebaseDatabase.getInstance().goOffline(); FirebaseDatabase.getInstance().goOnline();
Como resultado, el problema con la base de datos de Firebase no aparece tan a menudo y al menos después de un día. También el problema desaparece por un tiempo si reiniciar toda la aplicación (sin estas correcciones el problema se reproduce cada vez, solo volver a iniciar sesión ayuda).
De todos modos, el problema todavía existe y el reinicio de la aplicación es una muy mala solución :)
¿Alguna idea para solucionar este problema? ¿O tal vez estoy haciendo algo mal?
El registro completo de Firebase:
12-19 13:03:40.544 D/FirebaseAuth: Notifying listeners about user ( HbY7R8FPR6QwgstQd3wmypI2nwJ2 ).
12-19 13:03:40.546 D/FirebaseApp: Notifying auth state listeners.
12-19 13:03:40.546 D/FirebaseApp: Notified 1 auth state listeners.
12-19 13:03:40.546 D/RepoOperation: Auth token changed, triggering auth token refresh
12-19 13:03:40.602 D/FirebaseAuth: Notifying listeners about user ( HbY7R8FPR6QwgstQd3wmypI2nwJ2 ).
12-19 13:03:40.613 D/FirebaseApp: Notifying auth state listeners.
12-19 13:03:40.613 D/FirebaseApp: Notified 1 auth state listeners.
12-19 13:03:40.613 D/RepoOperation: Auth token changed, triggering auth token refresh
12-19 13:03:43.832 V/FA: Session started, time: 176462962
12-19 13:03:43.853 I/FA: Tag Manager is not found and thus will not be used
12-19 13:03:43.858 D/FA: Logging event (FE): _s, Bundle[{_o=auto, _sc=MainActivity, _si=3824046701607023337}]
12-19 13:03:43.885 V/FA: Using measurement service
12-19 13:03:43.885 V/FA: Connecting to remote service
12-19 13:03:43.909 D/FA: Connected to remote service
12-19 13:03:43.910 V/FA: Processing queued up service tasks: 1
12-19 13:03:44.139 W/PersistentConnection: pc_0 - Provided authentication credentials are invalid. This usually indicates your FirebaseApp instance was not initialized correctly. Make sure your google-services.json file has the correct firebase_url and api_key. You can re-download google-services.json from https://console.firebase.google.com/.
12-19 13:03:45.985 W/PersistentConnection: pc_0 - Provided authentication credentials are invalid. This usually indicates your FirebaseApp instance was not initialized correctly. Make sure your google-services.json file has the correct firebase_url and api_key. You can re-download google-services.json from https://console.firebase.google.com/.
12-19 13:03:48.945 V/FA: Inactivity, disconnecting from the service
PD Parece que el problema aparece solo en mi Nexus 5 (Android 6.0.1). No hay tal problema con Sony Xperia V (Android 4.3).
PPS También intenté crear compilaciones de depuración y liberación y agregar el rol de "Editor" a todas las cuentas de servicio autogeneradas en la consola de Google Cloud. Tampoco ayuda.
¡Finalmente encontré cómo solucionar el problema gracias a los ingenieros de soporte de Firebase! :)
El truco es esperar a obtener FirebaseAuth de FirebaseAuth.AuthStateListener (en lugar de obtenerlo directamente de FirebaseAuth.getInstance () ) antes de acceder a Firebase Database al inicio de la aplicación : parece que Firebase necesita algo de tiempo para inicializar / renovar la autenticación de usuario.
Entonces, el siguiente código no funciona correctamente:
// Main Activity
protected void onCreate(...) {
if (FirebaseAuth.getInstance().getCurrentUser() != null) {
// accessing Firebase Database
}
}
Debe ser así:
protected void onCreate(...) {
//...
authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// accessing Firebase Database
}
}
};
FirebaseAuth.getInstance().addAuthStateListener(authStateListener);
}
La respuesta de Alexander no funcionó para mí ...
Parece que borrar todo el almacenamiento de servicios de Google Play resuelve el problema Configuración => Aplicaciones => Servicios de Google Play => Almacenamiento => GESTIONAR ALMACENAMIENTO => BORRAR TODOS LOS DATOS , probablemente Firebase o Google tengan que solucionar este problema.