Para ayudarle a sus usuarios a controlar sus datos, el equipo de Firebase creó una biblioteca que simplifica dos procesos de datos de usuario comunes:
clearData
: elimina los datos de un usuario de servicios específicos de Firebase (actualmente Realtime Database, Firestore y Storage) cuando elimina su cuenta a través de Firebase Authentication.exportData
: guarda una copia de los datos de un usuario de los servicios de Firebase en una cadena JSON y la carga en Cloud Storage para que puedan descargarla fácilmente por sí mismos.
Continúe leyendo para descubrir cómo agregar funciones a su aplicación o acceda directamente al código en el repositorio de privacidad de usuario de Firebase en GitHub .
Agregue clearData
o exportData
a su aplicación
Las funciones clearData
y exportData
en la biblioteca se implementan como funciones de nube que operan con datos en Realtime Database, Cloud Storage y Cloud Firestore. Agregar las funciones en su propia aplicación es un proceso de tres pasos:
- Edite el archivo
user_privacy.json
de la biblioteca para reflejar el esquema de Realtime Database, Cloud Firestore y Cloud Storage de su aplicación. - Implemente
clearData
yexportData
como funciones en la nube. - Implemente activadores para las funciones de su aplicación.
- Proteja los datos
clearData
con reglas de almacenamiento.
Edite el archivo user_privacy.json
de la biblioteca
Para comenzar, clone o descargue el repositorio de GitHub sobre privacidad del usuario de Firebase .
Cuando hayas hecho eso, abre functions/user_privacy.json
en un editor de texto. El archivo json tiene una serie de rutas personalizables que las funciones clearData
y exportData
utilizan para encontrar los datos de su aplicación en Realtime Database, Cloud Firestore y Cloud Storage. Si su aplicación solo usa uno o dos de esos servicios, comience eliminando los objetos JSON asociados con los servicios no utilizados.
Una vez eliminados los objetos, puede comenzar a reemplazar los valores de marcador de posición de los servicios restantes con las estructuras de datos reales que utiliza su aplicación.
Agregar rutas de bases de datos en tiempo real a los datos del usuario
Para personalizar user_privacy.json
para la instancia de Realtime Database de su aplicación, reemplace la lista de cadenas de marcador de posición en "database"
con rutas reales a los datos del usuario:
... "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 solo desea agregar una de las funciones a su aplicación, puede eliminar el objeto de la otra función, en lugar de completarlo con sus datos.
Agregar objetos de Cloud Firestore que contengan datos de usuario
Para personalizar user_privacy.json
para la instancia de Cloud Firestore de tu aplicación, reemplaza la lista de objetos de marcador de posición en "firestore"
con objetos reales de Cloud Firestore que contienen datos de usuario:
... "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 solo desea agregar una de las funciones a su aplicación, puede eliminar el objeto de la otra función, en lugar de completarlo con sus datos.
Agregue el depósito de Cloud Storage y el nombre del archivo con datos de usuario
Para personalizar user_privacy.json
para la instancia de Cloud Storage de tu aplicación, reemplaza el depósito de almacenamiento del marcador de posición y el nombre del archivo en "storage"
con los valores reales:
... "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 solo desea agregar una de las funciones a su aplicación, puede eliminar el objeto de la otra función, en lugar de completarlo con sus datos.
Implemente clearData
y exportData
como funciones en la nube
Si aún no está familiarizado con Cloud Functions, lea cómo utilizarlas en la guía de introducción a Cloud Functions .
Una vez que se sienta cómodo con Cloud Functions, agregue las funciones clearData
y exportData
a su proyecto:
- Copie su
user_data.json
personalizado en su directoriofunctions
. - Copie el código del
index.js
de la biblioteca de privacidad del usuario alindex.js
de su proyecto.- Si no está utilizando
clearData
, omita las funcionesclearData
,clearDatabaseData
,clearFirestoreData
yclearStorageData
. - Si no está utilizando
exportData
, omita las funcionesexportData
,exportDatabaseData
,exportFirestoreData
yexportStorageData
.
- Si no está utilizando
- Implementa tus funciones.
Implementar activadores para clearData
y exportData
Cada función requiere un disparador diferente:
-
clearData
: se activa cuando un usuario elimina su cuenta mediante autenticación. -
exportData
: desencadenado por una solicitud HTTP.
Implementar un disparador clearData
Para activar un evento clearData
, debe utilizar un método de Autenticación. Si aún no lo ha hecho, agregue Autenticación a su aplicación: plataformas Apple , Android o web .
Luego, agregue una forma de invocar el método delete
del SDK de autenticación para su plataforma:
iOS+
FirebaseAuth.User.delete { error in
if let error = error {
print("Error deleting user: \(error)")
}
}
Androide
FirebaseAuth.getCurrentUser().delete();
Web
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();
}
});
Implementar un disparador exportData
Para implementar un activador exportData
, agregue un botón o enlace a su aplicación que invoque la función a través de una solicitud HTTP. Obtenga más información sobre cómo invocar funciones a través de HTTP en Llamar a funciones mediante solicitudes HTTP .
Pedir detalles:
- Tipo:
POST
- URL:
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
- Cuerpo:
<var>CURRENT_USER'S_UID</var>
Invocar la función directamente en Firebase Hosting
Si su aplicación es una aplicación web alojada en Firebase Hosting, puede invocar su función clearData
a través de una entrada rewrite
en el archivo firebase.json
del sitio:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Proteger datos exportData
con reglas de almacenamiento
Para mantener la privacidad de los datos exportados de sus usuarios, agregue reglas de Cloud Storage que restrinjan el acceso al usuario exportador.
- Visita Almacenamiento en Firebase console .
- Abra la pestaña Reglas .
- Pegue la siguiente regla y luego haga clic en Publicar :
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... } }