Recherche…


Comment enregistrer les données de profil utilisateur

Chaque utilisateur authentifié a un Firebase uid qui est unique parmi tous les fournisseurs et est retourné dans le résultat de chaque méthode d'authentification.

Un bon moyen de stocker les données de votre utilisateur consiste à créer un nœud pour conserver toutes les données des utilisateurs et les protéger en utilisant vos règles de sécurité.

- Base de données

{
   "users": {
      "uid1" : {
         "name": "Steve",
         "surname": "Jobs"
      },
      "uid2" : {
         "name": "Bill",
         "surname": "Gates"
      }
   }
}

- Sécurité

{
    "rules": {
        "users": {
            "$uid": {
                // If node's key matches the id of the auth user
                ".write": "$uid == auth.uid"
            }
        }
    }
}

Le $uid dans les règles ci-dessus est une "variable dollar", qui garantit que les règles sous-jacentes sont appliquées à tous les nœuds enfants des users . Pour plus d'informations, reportez-vous à la documentation sur l' utilisation de variables $ pour capturer des segments de chemin .

Pourquoi enregistrer les données utilisateur dans la base de données

L'authentification Firebase permet aux utilisateurs de votre application de se connecter avec des fournisseurs de services sociaux ou leur courrier électronique + mot de passe. Mais que faire si vous souhaitez stocker des informations supplémentaires sur un utilisateur, au-delà de ce que l'authentification Firebase vous permet de spécifier?

Ou si vous souhaitez afficher une liste des utilisateurs dans votre application? L'authentification Firebase n'a pas d'API pour cela.

La plupart des développeurs résolvent ce problème en stockant les informations supplémentaires dans une base de données distincte. Cette rubrique explique comment stocker ces informations dans la base de données Firebase Realtime .

Gestion des données de compte d'utilisateur dans la base de données en temps réel

Le système auth Firebase est la source d'un utilisateur uid , displayName , photoURL , et peut - être email . Les comptes basés sur un mot de passe définissent ces valeurs persistantes dans le système d'authentification via la méthode .updateProfile . Stocker ces valeurs dans la base de données Realtime, rDB, le nœud users pose le problème des données obsolètes. Les noms d'affichage, par exemple, peuvent changer. Pour conserver ces valeurs en synchronisation, utilisez le stockage local de concert avec .onAuthStateChange .

sur chaque .onAuthStateChange

  • getItem('displayName') et getItem('photoURL')
  • comparer à user.displayName et user.photoURL
  • si différent
    • setItem('displayName') et setItem('photoURL')
    • db.ref.child('users').update les valeurs de displayName et / ou photoURL

.onAuthStateChange déclenche à chaque chargement ou rechargement de page, ainsi qu'à chaque changement d'état d'authentification. Il se déclenche souvent, par exemple des applications multi-pages. Toutefois, la lecture et l’écriture sur le stockage local sont synchrones et très rapides. Il n’ya donc pas d’impact notable sur les performances des applications.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow