users update sendpasswordresetemail linkwithcredential current createuserwithemailandpassword android firebase firebase-database

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

  1. 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(...);

  1. 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é

  1. 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(...);

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