android - con - firebase realtime database vs firestore
Agregue información de usuario adicional con firebase (3)
He integrado Firebase Auth con mi aplicación de Android.
Digamos que un usuario tiene un correo
[email protected]
.
Quiero agregar información adicional al usuario, como el nombre del usuario, la ocupación y la dirección.
¿Cómo puedo conectar la tabla de autenticación de usuario con mi aplicación de Android para hacer eso?
¿Necesito escribir alguna API para eso?
Debe crear otra tabla de base de datos que diga "usuario". En el inicio de sesión exitoso, regístrese por primera vez, debe crear una nueva fila en la tabla de usuario.
public static void writeNewUser(DatabaseReference databaseReference, String userId, String name, String email, int accountType) {
User user = new User(name, email, accountType);
databaseReference.child("users").child(userId).setValue(user);
}
Puede consultar https://github.com/firebase/quickstart-android/tree/61f8eb53020e38b1fdc5aaeddac2379b25240f3b/database
No necesita escribir ningún código personalizado para hacer esto. Firebase ya tiene funciones que puedes usar.
Lo primero que debe hacer es asegurarse de que los usuarios tengan acceso solo a los datos que almacenan.
Para hacer esto, vaya a
Database/Rules
de
Database/Rules
y cambie sus reglas a esto:
{
"rules": {
"my_app_user": {
"$uid": {
".write": "auth != null && auth.uid == $uid",
".read": "auth != null && auth.uid == $uid"
}
}
}
}
Luego, para guardar los nuevos detalles en una base de datos Firebase, haga esto:
MyAppUser user = new MyAppUser();
user.setAddressTwo("address_two");
user.setPhoneOne("phone_one");
...
mDatabaseReference.child("my_app_user").child(firebaseUser.getUid()).setValue(user).
addOnCompleteListener(DetailsCaptureActivity.this,
new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
...
El nombre del
my_app_user
debe coincidir tanto en su código como en las reglas de Firebase; de lo contrario, no persistirá.
Si todo va como se supone que debe hacerlo, debería ver los detalles en su base de datos:
Primero, cree un directorio de
users
en db.
Luego, usando la identificación única del usuario que obtiene del proceso de authn, almacene la información del usuario en
users/{userid}
.
Para lograr esto, debe entrar en los detalles de la base de datos de Firebase. Ver aquí: firebase.google.com/docs/database/android/save-data