Pour vous aider à aider vos utilisateurs à contrôler leurs données, l'équipe Firebase a créé une bibliothèque qui simplifie deux processus de données utilisateur courants :
clearData
: supprime les données d'un utilisateur de services Firebase spécifiques (actuellement base de données en temps réel, Firestore et stockage) lorsqu'il supprime son compte via l'authentification Firebase.exportData
: enregistre une copie des données d'un utilisateur à partir des services Firebase dans une chaîne JSON et la télécharge sur Cloud Storage afin qu'il puisse facilement la télécharger pour lui-même.
Continuez à lire pour savoir comment ajouter les fonctions à votre application, ou accédez directement au code du dépôt GitHub de confidentialité des utilisateurs Firebase .
Ajoutez clearData
ou exportData
à votre application
Les fonctions clearData
et exportData
de la bibliothèque sont implémentées en tant que fonctions Cloud qui fonctionnent sur les données de Realtime Database, Cloud Storage et Cloud Firestore. L'ajout des fonctions dans votre propre application est un processus en trois étapes :
- Modifiez le fichier
user_privacy.json
de la bibliothèque pour refléter le schéma de base de données en temps réel, Cloud Firestore et Cloud Storage de votre application. - Déployez
clearData
etexportData
en tant que fonctions Cloud. - Implémentez des déclencheurs pour les fonctions de votre application.
- Sécurisez les données
clearData
avec des règles de stockage.
Modifier le fichier user_privacy.json
de la bibliothèque
Pour commencer, clonez ou téléchargez le dépôt GitHub de confidentialité des utilisateurs Firebase .
Lorsque vous avez fait cela, ouvrez functions/user_privacy.json
dans un éditeur de texte. Le fichier json comporte une série de chemins personnalisables que les fonctions clearData
et exportData
utilisent pour rechercher les données de votre application dans Realtime Database, Cloud Firestore et Cloud Storage. Si votre application n'utilise qu'un ou deux de ces services, commencez par supprimer les objets JSON associés aux services inutilisés.
Une fois les objets supprimés, vous pouvez commencer à remplacer les valeurs d'espace réservé des services restants par les structures de données réelles utilisées par votre application.
Ajouter des chemins de base de données en temps réel aux données utilisateur
Pour personnaliser user_privacy.json
pour l'instance de base de données en temps réel de votre application, remplacez la liste des chaînes d'espace réservé sous "database"
par les chemins réels vers les données utilisateur :
... "database": { "clear": [ "/users/UID_VARIABLE", // Replace with your "/admins/UID_VARIABLE" // actual RTDB paths ], "export": [ "/users/UID_VARIABLE", // Replace with your "/admins/UID_VARIABLE" // actual RTDB paths ] }, ...
Si vous souhaitez ajouter uniquement une des fonctions à votre application, vous pouvez supprimer l'objet de l'autre fonction, au lieu de le remplir avec vos données.
Ajouter des objets Cloud Firestore contenant des données utilisateur
Pour personnaliser user_privacy.json
pour l'instance Cloud Firestore de votre application, remplacez la liste des objets réservés sous "firestore"
par les objets Cloud Firestore réels contenant les données utilisateur :
... "firestore": { "clear": [ {"collection": "users", "doc": "UID_VARIABLE", "field": "name"}, {"collection": "users", "doc": "UID_VARIABLE"}, // Replace with your {"collection": "admins", "doc": "UID_VARIABLE"} // actual Firestore paths ], "export": [ {"collection": "users", "doc": "UID_VARIABLE", "field": "name"}, {"collection": "users", "doc": "UID_VARIABLE"}, // Replace with your {"collection": "admins", "doc": "UID_VARIABLE"} // actual Firestore paths ] }, ...
Si vous souhaitez ajouter uniquement une des fonctions à votre application, vous pouvez supprimer l'objet de l'autre fonction, au lieu de le remplir avec vos données.
Ajoutez le bucket Cloud Storage et le nom du fichier avec les données utilisateur
Pour personnaliser user_privacy.json
pour l'instance Cloud Storage de votre application, remplacez l'espace réservé du bucket de stockage et le nom du fichier sous "storage"
par les valeurs réelles :
... "storage": { "clear": [ // Replace with your actual storage data ["clear-export.appspot.com", "UID_VARIABLE/sample_data.json"], ["clear-exportappspot.com", "UID_VARIABLE"] ], "export": [ // Replace with your actual storage data ["clear-export.appspot.com", "UID_VARIABLE/sample_data.json"] ] }, ...
Si vous souhaitez ajouter uniquement une des fonctions à votre application, vous pouvez supprimer l'objet de l'autre fonction, au lieu de le remplir avec vos données.
Déployer clearData
et exportData
en tant que fonctions Cloud
Si vous n'êtes pas encore familier avec Cloud Functions, découvrez comment les utiliser dans le guide de démarrage de Cloud Functions .
Une fois que vous êtes à l'aise avec Cloud Functions, ajoutez les fonctions clearData
et exportData
à votre projet :
- Copiez votre
user_data.json
personnalisé dans votre répertoirefunctions
. - Copiez le code de
index.js
de la bibliothèque de confidentialité des utilisateurs versindex.js
de votre projet.- Si vous n'utilisez pas
clearData
, omettez les fonctionsclearData
,clearDatabaseData
,clearFirestoreData
etclearStorageData
. - Si vous n'utilisez pas
exportData
, omettez les fonctionsexportData
,exportDatabaseData
,exportFirestoreData
etexportStorageData
.
- Si vous n'utilisez pas
- Déployez vos fonctions.
Implémenter des déclencheurs pour clearData
et exportData
Chaque fonction nécessite un déclencheur différent :
-
clearData
: déclenché lorsqu'un utilisateur supprime son compte via l'authentification. -
exportData
: déclenché par une requête HTTP.
Implémenter un déclencheur clearData
Pour déclencher un événement clearData
, vous devez utiliser une méthode d'authentification. Si vous ne l'avez pas encore fait, ajoutez l'authentification à votre application : plateformes Apple , Android ou web .
Ensuite, ajoutez un moyen d'invoquer la méthode delete
du SDK d'authentification pour votre plate-forme :
iOS+
FirebaseAuth.User.delete { error in
if let error = error {
print("Error deleting user: \(error)")
}
}
Android
FirebaseAuth.getCurrentUser().delete();
la toile
firebase.auth().currentUser.delete().catch(function(error) {
if (error.code === 'auth/requires-recent-login') {
window.alert('Please sign-in and try again.');
firebase.auth().signOut();
}
});
Implémenter un déclencheur exportData
Pour implémenter un déclencheur exportData
, ajoutez un bouton ou un lien vers votre application qui appelle la fonction via une requête HTTP. En savoir plus sur l'appel de fonctions via HTTP dans Appeler des fonctions via des requêtes HTTP .
Détails de la demande:
- Type :
POST
- URL :
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
- Corps :
<var>CURRENT_USER'S_UID</var>
Appelez la fonction directement dans Firebase Hosting
Si votre application est une application Web hébergée sur Firebase Hosting, vous pouvez appeler votre fonction clearData
via une entrée rewrite
dans le fichier firebase.json
du site :
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Sécurisez les données exportData
avec des règles de stockage
Pour préserver la confidentialité des données exportées par vos utilisateurs, ajoutez des règles Cloud Storage qui restreignent l'accès à l'utilisateur qui exporte.
- Visitez Stockage dans la console Firebase .
- Ouvrez l'onglet Règles .
- Collez la règle suivante, puis cliquez sur Publier :
service firebase.storage { match /b/{bucket}/o { match /exportData { // Only allow access to the user who requested the export match /{uid} { allow read, write: if request.auth.uid == uid } match /{uid}/{path=**} { allow read, write: if request.auth.uid == uid } } // Other application rules... } }