J'ai intégré l'authentification de Firebase avec mon Android. Disons qu'un utilisateur a un courrier électronique [email protected]
. Je souhaite ajouter des informations supplémentaires à l'utilisateur, telles que le nom de l'utilisateur, sa profession et son adresse. Comment puis-je connecter la table d'authentification de l'utilisateur avec mon Android app pour le faire?)
Dois-je écrire des API pour cela?
Commencez par créer un répertoire users
dans la base de données. Ensuite, en utilisant l'identifiant unique de l'utilisateur que vous obtenez du processus authn, stockez les informations de l'utilisateur sous users/{userid}
.
Pour ce faire, vous devez entrer dans les détails de la base de données Firebase. Voir ici: https://firebase.google.com/docs/database/Android/save-data
Pour ce faire, vous n'avez pas besoin d'écrire de code personnalisé. Firebase possède déjà des fonctionnalités que vous pouvez utiliser.
La première chose à faire est de s’assurer que les utilisateurs n’ont accès qu’aux données qu’ils stockent. Pour ce faire, allez à Database/Rules
et changez vos règles pour ceci:
{
"rules": {
"my_app_user": {
"$uid": {
".write": "auth != null && auth.uid == $uid",
".read": "auth != null && auth.uid == $uid"
}
}
}
}
Ensuite, pour enregistrer les nouveaux détails dans une base de données Firebase, procédez comme suit:
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()) {
...
Le nom de l'enfant my_app_user
doit correspondre à la fois dans votre code et dans les règles Firebase, sinon il ne persistera pas.
Si tout se passe comme prévu, vous devriez voir les détails dans votre base de données:
Vous devez créer une autre table de base de données nommée "utilisateur". En cas de connexion réussie, pour la première fois, vous devez créer une nouvelle ligne dans la table utilisateur.
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);
}
Vous pouvez consulter https://github.com/firebase/quickstart-Android/tree/61f8eb53020e38b1fdc5aaeddac2379b25240f3b/database