# Sauvegarder des données utilisateurs dans Firebase

> Explorez comment sauvegarder des données utilisateurs dans Firebase pour personnaliser l'expérience utilisateur, en utilisant des fonctionnalités de Cloud Firestore et le système d'authentification Firebase. Découvrez comment structurer et gérer des données dans votre application.

https://docs.pandasuite.com/fr/essentials/integrations/save-user-data-in-firebase/

**Sauvegardez des données utilisateurs dans Firebase (score, profil, langue de préférence, progression...) et personnalisez l'expérience utilisateur au sein de l'application.**

[Vidéo : Tutoriel pour sauvegarder des données utilisateurs (score, profil, langue) dans Firebase et personnaliser une app PandaSuite](https://www.youtube.com/embed/YzxsL0-JXVc?&hl=fr&cc_lang_pref=fr&cc_load_policy=1)

Cette fonctionnalité s'appuie sur le [système d'authentification via Firebase](https://docs.pandasuite.com/fr/essentials/components/authentication/).

Lorsqu'un compte utilisateur est créé sur Firebase, il possède un ensemble fixe de propriétés : un identifiant unique, une adresse email et un nom qui sont stockées dans la base de données utilisateur du projet Firebase. Grâce à Cloud Firestore la base de données de Firebase, vous pouvez stocker des propriétés supplémentaires : un score, un profil d'utilisateur etc...

> **Info**
>
> Avant d'associer une donnée à un utilisateur, créez au préalable un projet
> Firebase et configurez-le correctement via le composant Firebase Session.
> Insérez le formulaire d'authentification pour permettre aux utilisateurs de se
> connecter dans votre application.

## Structure de données

[Cloud Firestore](https://firebase.google.com/docs/firestore) est une base de données NoSQL cloud qui est utilisée pour ajouter, récupérer et mettre à jour des données dans votre application. Fondamentalement, il s’agit d’une base de données utilisée pour stocker des données dans votre console Firebase. Les données du Firestore sont stockées sous forme de documents, qui sont organisés en collections. Il n'y a pas de tables ou de lignes. Chaque document contient un ensemble de paires valeur clé.

La collection *users* contient vos différents utilisateurs, chacun représenté par un document :

Voici un exemple de document :

[Image : Console Cloud Firestore : document d'un utilisateur dans la collection users, avec ses champs email et name encadrés]

Cloud Firestore est sans schéma, vous avez donc une liberté totale sur les champs que vous placez dans chaque document et les types de données que vous stockez dans ces champs.

## Créer / Modifier la donnée depuis l'app

Cloud Firestore n'impose pas de schéma prédéfini. Dans PandaSuite, le plus simple est toutefois de préparer cette structure à l'avance pour que Studio puisse mieux l'exposer lors de la configuration de votre app.

### 1. Préparer la structure du document utilisateur

Commencez par **Données par défaut** dans le composant [Session Firebase](https://docs.pandasuite.com/fr/essentials/components/firebase-session/).

Cet onglet définit le document créé dans Cloud Firestore pour chaque nouvel utilisateur. C'est l'endroit le plus simple pour préparer des champs de profil, de progression, de préférences, des objets imbriqués, des tableaux ou des collections PandaSuite.

Comme cette structure existe déjà dans Studio, il devient ensuite plus facile de cibler les bons champs dans vos liaisons de données, conditions et actions.

### 2. Compléter le profil au moment de l'inscription

Si vous devez aussi collecter des informations dans le formulaire d'inscription, ajoutez-les avec les **Champs utilisateur avancés** du composant [Authentification](https://docs.pandasuite.com/fr/essentials/components/authentication/).

Ces valeurs saisies à l'inscription sont ensuite fusionnées avec la structure par défaut au moment de la création du compte.

### 3. Mettre à jour les données ensuite depuis l'app

Une fois que le compte utilisateur dispose d'un document dans Cloud Firestore, sélectionnez un déclencheur puis choisissez **Agir sur une source de données** > **Session Firebase** > **Modifier la donnée**.

[Vidéo : Sur une réponse de quiz, réglage de l'action Modifier la donnée de Session Firebase pour incrémenter de 1 le champ score]

> **Info**
>
> Cette action repose sur le même champ générique de modification de données que
> le [Datastore](https://docs.pandasuite.com/fr/essentials/data/datastore/), mais elle met à jour le
> document Cloud Firestore de l'utilisateur actuellement connecté.

Utilisez-la pour mettre à jour un champ existant, incrémenter un score, ajouter
ou retirer des éléments dans un tableau ou une collection, ou encore vider un
champ si nécessaire.

Dans ce contrôle, choisissez une **Cible**, puis une **Fonction**, et une
**Valeur** lorsque cette fonction en a besoin.

[Vidéo : Sur un bouton favori, réglage de Modifier la donnée pour ajouter le lieu sélectionné, pris dans la base locale, à la liste saved_items]

> **Info**
>
> Utilisez exactement le même nom de champ partout dans votre projet. Par
> exemple, si vous enregistrez `language` dans une action, réutilisez bien
> `language` quand vous la lisez ou la modifiez ailleurs.
>
> Si un champ n'a pas été préparé dans **Données par défaut**, il peut tout de
> même être ajouté plus tard lorsque vous mettez à jour un document utilisateur
> déjà existant depuis l'app. Cela reste possible, mais préparer la structure
> en amont rend généralement la configuration beaucoup plus simple dans Studio.

## Gérer la donnée depuis la console Cloud Firestore

Depuis la console Firebase, affichez, ajoutez, modifiez et supprimez vos données en temps réel.

Cliquez sur une collection pour afficher ses documents, puis cliquez sur un document pour afficher ses champs et sous-collections. Cliquez sur un champ pour modifier sa valeur.

[Image : Console Cloud Firestore en trois colonnes : collection users, ses documents, puis les champs email, name et score d'un utilisateur]

Vous pouvez ensuite réutiliser ces données dans votre app avec le data binding, les conditions et les workflows d'automatisation.

## Ajouter des types spécifiques à PandaSuite dans Firebase

Vous pouvez aussi utiliser Firebase pour stocker des types spécifiques à PandaSuite et les retrouver facilement. Cela permet de conserver la structure des données associées et de les utiliser pour des actions automatisées, comme reprendre une progression ou effectuer un changement d'écran en fonction d'une information précédemment sauvegardée.

[Vidéo : Stocker des types spécifiques à PandaSuite dans Firebase et les retrouver dans l'app, partie 1 sur 2](https://www.youtube.com/embed/Kn7Mt1Ol1SU)

[Vidéo : Stocker des types spécifiques à PandaSuite dans Firebase et les retrouver dans l'app, partie 2 sur 2](https://www.youtube.com/embed/IOjsOPASqqg)

## Voir aussi

- [Créer un classement](https://docs.pandasuite.com/fr/essentials/gamification/leaderboard/)
