Firebase Android addListenerForSingleValueEvent a veces no devuelve datos
Cuando mi aplicación se inicia, comprobar los detalles del usuario actual en mi base de datos Firebase (estoy almacenando es uid para eso).
Estoy adjuntando addListenerForSingleValueEvent a la referencia del usuario para leer sus datos.
- Base de datos de Firebase de Android: Recuperación de datos únicos sin detector de eventos
- FirebaseRemoteConfig.fetch () no activa OnCompleteListener cada vez
- La aplicación de Android se bloquea al conectarse a Firebase
- Quiero fijar una prioridad calculada usando el timestamp del servidor proporcionado por Firebase
- Cómo recuperar un objeto List de la base de firebase en android
Mi problema es que a veces, no devuelve ningún valor, ni éxito ni fracaso.
Solamente el borrado de datos de la aplicación lo resuelve, pero por supuesto obliga al usuario a iniciar sesión nuevamente.
He leído algunos posts en SO, pero no encontré ninguna solución.
Aquí está mi pieza de código:
DatabaseReference newUser = FirebaseDatabase.getInstance().getReference("users/"+uid); newUser.addListenerForSingleValueEvent(new ValueEventListener() @Override public void onDataChange(DataSnapshot snapshot) {} @Override public void onCancelled(DatabaseError databaseError) {} });
- ¿Pueden los mensajes de la nube de firebase ser detectados por la aplicación en segundo plano?
- ¿Cómo volver a autenticar un usuario en Firebase con Google Provider?
- Robolectric app testing con Firebase
- Cómo evitar la caché Firebase para actualizar los datos (en la aplicación para Android)?
- Implementar una función de recibo de lectura en la aplicación de mensajería de grupo de Firebase
- ¿Cómo hacer una búsqueda simple en cadena en la base de datos Firebase?
- Firebase setDisplayName del usuario al crear el usuario Android
- No se pudo resolver: com.google.firebase: firebase-database: 10.2.0
La recomendación que he visto para esto es llamar a keepSynced(true)
en el objeto Query
.
Mi conjetura es user/:id
no existe. Compruebe su salida de error:
DatabaseReference newUser = FirebaseDatabase.getInstance() .getReference("users") .child(uid) .addListenerForSingleValueEvent(new ValueEventListener() @Override public void onDataChange(DataSnapshot snapshot) { if (snapshot.exists()) { Log.i(TAG, snapshot.val()); } else { Log.e(TAG, "Not found: " + uid); } } @Override public void onCancelled(DatabaseError databaseError) { Log.e(TAG, databaseError.toString(); } });
He estado teniendo el mismo problema durante días y finalmente lo arreglé.
Parece que mi clave Api fue cambiado! Y eso es lo que estaba impidiendo addListenerForSingleValueEvent()
de volver!
Vaya a Firebase Console , abra su proyecto, haga clic en el icono de configuración Y vaya a Configuración del proyecto . Allí podrá ver la Web API Key
. Tome eso y cópielo en su archivo google-services.json
en el directorio de su proyecto. Aquí hay un fragmento de ese archivo:
... ], "api_key": [ { "current_key": "<COPY Web Api Key HERE>" } ], ...
Eso es. Después de reemplazar el valor de "current_key" con la clave de Firebase, volvió a funcionar (anteriormente tenía alguna otra clave creo que generó en la consola de Google y funcionó durante meses.Hace unos días dejó de funcionar)