es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reglas para la base de datos en tiempo real

Utilizo Firebase, para ser preciso una base de datos en tiempo real, y no sé qué reglas debo establecer. Establecí estas reglas:

{
“rules”: {
“.read”: “data.child(‘Users’).child(auth.uid).exists()”,
“.write”: true
}
}

pero ahora todo el mundo puede escribir.
Cuando establecí estas:

{
“rules”: {
“.read”: “data.child(‘Users’).child(auth.uid).exists()”,
“.write”: “auth != null”
}
}

los usuarios que usan Gmail no pueden iniciar sesión porque el registro en la base de datos no está creado, pero no en todos los dispositivos. Cuando lo pruebo en OnePlus todo está bien, cuando lo pruebo en Samsung no se crea el registro en la base de datos.
Este es mi código responsable de la creación de usuarios:

fAuth.createUserWithEmailAndPassword(reg_email, reg_password).addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()) {
fAuth.getCurrentUser().sendEmailVerification().addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful()) {
userID = fAuth.getCurrentUser().getUid();
reg_user = new User(reg_email, sex, btn_text, 0, 0);
databaseReference.child(userID).setValue(reg_user);
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(intent);
finish();
FirebaseAuth.getInstance().signOut();
} else {
Toast.makeText(RegisterActivity.this, “Error ” + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.INVISIBLE);
}
}
});
} else {
Toast.makeText(RegisterActivity.this, “Error ” + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.INVISIBLE);
}
}
});

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en el código responsable de crear el usuario. Es posible que el registro en la base de datos no se esté creando en ciertos dispositivos. Puedes intentar depurar el código para ver si hay algún error que esté impidiendo que se cree el registro. Además, puedes intentar configurar las reglas para permitir que sólo los usuarios autenticados escriban en la base de datos, ya que esto asegurará que sólo los usuarios que hayan iniciado sesión puedan escribir en la base de datos.

Comments are closed.