Per aiutarti ad aiutare i tuoi utenti a controllare i propri dati, il team Firebase ha creato una libreria che semplifica due processi comuni relativi ai dati utente:
clearData
: elimina i dati di un utente da servizi Firebase specifici (attualmente Realtime Database, Firestore e Storage) quando elimina il proprio account tramite l'autenticazione Firebase.exportData
: salva una copia dei dati di un utente dai servizi Firebase in una stringa JSON e la carica su Cloud Storage in modo che possano scaricarli facilmente da soli.
Continua a leggere per scoprire come aggiungere le funzioni alla tua app o passa direttamente al codice nel repository GitHub sulla privacy degli utenti di Firebase .
Aggiungi clearData
o exportData
alla tua app
Le funzioni clearData
ed exportData
nella libreria sono implementate come funzioni Cloud che operano sui dati in Realtime Database, Cloud Storage e Cloud Firestore. L'aggiunta delle funzioni nella tua app è un processo in tre fasi:
- Modifica il file
user_privacy.json
della libreria in modo che rifletta lo schema Realtime Database, Cloud Firestore e Cloud Storage della tua app. - Distribuisci
clearData
edexportData
come Cloud Functions. - Implementa trigger per le funzioni nella tua app.
- Proteggi i dati
clearData
con regole di archiviazione.
Modifica il file user_privacy.json
della libreria
Per iniziare, clona o scarica il repository GitHub sulla privacy degli utenti Firebase .
Dopo averlo fatto, apri functions/user_privacy.json
in un editor di testo. Il file json ha una serie di percorsi personalizzabili che le funzioni clearData
ed exportData
utilizzano per trovare i dati della tua app in Realtime Database, Cloud Firestore e Cloud Storage. Se la tua app utilizza solo uno o due di questi servizi, inizia eliminando gli oggetti JSON associati ai servizi inutilizzati.
Una volta eliminati gli oggetti, puoi iniziare a sostituire i valori segnaposto dei servizi rimanenti con le strutture dati effettive utilizzate dalla tua app.
Aggiungi percorsi di Realtime Database ai dati utente
Per personalizzare user_privacy.json
per l'istanza Realtime Database della tua app, sostituisci l'elenco di stringhe segnaposto in "database"
con percorsi effettivi ai dati utente:
... "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 ] }, ...
Se desideri aggiungere solo una delle funzioni alla tua app, puoi eliminare l'oggetto dell'altra funzione, invece di compilarlo con i tuoi dati.
Aggiungi oggetti Cloud Firestore contenenti dati utente
Per personalizzare user_privacy.json
per l'istanza Cloud Firestore della tua app, sostituisci l'elenco di oggetti segnaposto in "firestore"
con oggetti Cloud Firestore effettivi contenenti dati utente:
... "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 ] }, ...
Se desideri aggiungere solo una delle funzioni alla tua app, puoi eliminare l'oggetto dell'altra funzione, invece di compilarlo con i tuoi dati.
Aggiungi il bucket Cloud Storage e il nome file con i dati utente
Per personalizzare user_privacy.json
per l'istanza Cloud Storage della tua app, sostituisci il bucket di archiviazione segnaposto e il nome del file in "storage"
con i valori effettivi:
... "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"] ] }, ...
Se desideri aggiungere solo una delle funzioni alla tua app, puoi eliminare l'oggetto dell'altra funzione, invece di compilarlo con i tuoi dati.
Distribuisci clearData
ed exportData
come Cloud Functions
Se non hai ancora familiarità con Cloud Functions, leggi come utilizzarle nella guida introduttiva di Cloud Functions .
Una volta acquisita dimestichezza con Cloud Functions, aggiungi le funzioni clearData
ed exportData
al tuo progetto:
- Copia il
user_data.json
personalizzato nella directoryfunctions
. - Copia il codice
index.js
della libreria della privacy dell'utenteindex.js
del tuo progetto.- Se non stai utilizzando
clearData
, ometti le funzioniclearData
,clearDatabaseData
,clearFirestoreData
eclearStorageData
. - Se non utilizzi
exportData
, ometti le funzioniexportData
,exportDatabaseData
,exportFirestoreData
eexportStorageData
.
- Se non stai utilizzando
- Distribuisci le tue funzioni.
Implementare i trigger per clearData
ed exportData
Ciascuna funzione richiede un trigger diverso:
-
clearData
: attivato quando un utente elimina il proprio account tramite l'autenticazione. -
exportData
: attivato da una richiesta HTTP.
Implementare un trigger clearData
Per attivare un evento clearData
, è necessario utilizzare un metodo da Authentication. Se non l'hai ancora fatto, aggiungi l'Autenticazione alla tua app: piattaforme Apple , Android o web .
Quindi, aggiungi un modo per richiamare il metodo delete
dell'SDK di autenticazione per la tua piattaforma:
iOS+
FirebaseAuth.User.delete { error in
if let error = error {
print("Error deleting user: \(error)")
}
}
Androide
FirebaseAuth.getCurrentUser().delete();
ragnatela
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();
}
});
Implementare un trigger exportData
Per implementare un trigger exportData
, aggiungi un pulsante o un collegamento alla tua app che richiami la funzione tramite una richiesta HTTP. Scopri di più sulla chiamata di funzioni su HTTP in Chiama funzioni tramite richieste HTTP .
Dettagli richiesta:
- Tipo:
POST
- URL:
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
- Corpo:
<var>CURRENT_USER'S_UID</var>
Richiama la funzione direttamente in Firebase Hosting
Se la tua app è un'app Web ospitata su Firebase Hosting, puoi richiamare la funzione clearData
tramite una voce rewrite
nel file firebase.json
del sito:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Proteggi i dati exportData
con regole di archiviazione
Per mantenere privati i dati esportati dei tuoi utenti, aggiungi regole Cloud Storage che limitano l'accesso all'utente esportatore.
- Visita Archiviazione nella console Firebase .
- Apri la scheda Regole .
- Incolla la seguente regola, quindi fai clic su Pubblica :
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... } }
Aggiungi clearData
o exportData
alla tua app
Le funzioni clearData
ed exportData
nella libreria sono implementate come funzioni Cloud che operano sui dati in Realtime Database, Cloud Storage e Cloud Firestore. L'aggiunta delle funzioni nella tua app è un processo in tre fasi:
- Modifica il file
user_privacy.json
della libreria in modo che rifletta lo schema Realtime Database, Cloud Firestore e Cloud Storage della tua app. - Distribuisci
clearData
edexportData
come Cloud Functions. - Implementa trigger per le funzioni nella tua app.
- Proteggi i dati
clearData
con regole di archiviazione.
Modifica il file user_privacy.json
della libreria
Per iniziare, clona o scarica il repository GitHub sulla privacy degli utenti Firebase .
Dopo averlo fatto, apri functions/user_privacy.json
in un editor di testo. Il file json ha una serie di percorsi personalizzabili che le funzioni clearData
ed exportData
utilizzano per trovare i dati della tua app in Realtime Database, Cloud Firestore e Cloud Storage. Se la tua app utilizza solo uno o due di questi servizi, inizia eliminando gli oggetti JSON associati ai servizi inutilizzati.
Una volta eliminati gli oggetti, puoi iniziare a sostituire i valori segnaposto dei servizi rimanenti con le strutture dati effettive utilizzate dalla tua app.
Aggiungi percorsi di Realtime Database ai dati utente
Per personalizzare user_privacy.json
per l'istanza Realtime Database della tua app, sostituisci l'elenco di stringhe segnaposto in "database"
con percorsi effettivi ai dati utente:
... "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 ] }, ...
Se desideri aggiungere solo una delle funzioni alla tua app, puoi eliminare l'oggetto dell'altra funzione, invece di compilarlo con i tuoi dati.
Aggiungi oggetti Cloud Firestore contenenti dati utente
Per personalizzare user_privacy.json
per l'istanza Cloud Firestore della tua app, sostituisci l'elenco di oggetti segnaposto in "firestore"
con oggetti Cloud Firestore effettivi contenenti dati utente:
... "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 ] }, ...
Se desideri aggiungere solo una delle funzioni alla tua app, puoi eliminare l'oggetto dell'altra funzione, invece di compilarlo con i tuoi dati.
Aggiungi il bucket Cloud Storage e il nome file con i dati utente
Per personalizzare user_privacy.json
per l'istanza Cloud Storage della tua app, sostituisci il bucket di archiviazione segnaposto e il nome file in "storage"
con i valori effettivi:
... "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"] ] }, ...
Se desideri aggiungere solo una delle funzioni alla tua app, puoi eliminare l'oggetto dell'altra funzione, invece di compilarlo con i tuoi dati.
Distribuisci clearData
ed exportData
come Cloud Functions
Se non hai ancora familiarità con Cloud Functions, leggi come utilizzarle nella guida introduttiva di Cloud Functions .
Una volta acquisita dimestichezza con Cloud Functions, aggiungi le funzioni clearData
ed exportData
al tuo progetto:
- Copia il
user_data.json
personalizzato nella directoryfunctions
. - Copia il codice
index.js
della libreria della privacy dell'utenteindex.js
del tuo progetto.- Se non stai utilizzando
clearData
, ometti le funzioniclearData
,clearDatabaseData
,clearFirestoreData
eclearStorageData
. - Se non utilizzi
exportData
, ometti le funzioniexportData
,exportDatabaseData
,exportFirestoreData
eexportStorageData
.
- Se non stai utilizzando
- Distribuisci le tue funzioni.
Implementare i trigger per clearData
ed exportData
Ciascuna funzione richiede un trigger diverso:
-
clearData
: attivato quando un utente elimina il proprio account tramite l'autenticazione. -
exportData
: attivato da una richiesta HTTP.
Implementare un trigger clearData
Per attivare un evento clearData
, è necessario utilizzare un metodo da Authentication. Se non l'hai ancora fatto, aggiungi l'Autenticazione alla tua app: piattaforme Apple , Android o web .
Quindi, aggiungi un modo per richiamare il metodo delete
dell'SDK di autenticazione per la tua piattaforma:
iOS+
FirebaseAuth.User.delete { error in
if let error = error {
print("Error deleting user: \(error)")
}
}
Androide
FirebaseAuth.getCurrentUser().delete();
ragnatela
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();
}
});
Implementare un trigger exportData
Per implementare un trigger exportData
, aggiungi un pulsante o un collegamento alla tua app che richiami la funzione tramite una richiesta HTTP. Scopri di più sulla chiamata di funzioni su HTTP in Chiama funzioni tramite richieste HTTP .
Dettagli richiesta:
- Tipo:
POST
- URL:
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
- Corpo:
<var>CURRENT_USER'S_UID</var>
Richiama la funzione direttamente in Firebase Hosting
Se la tua app è un'app Web ospitata su Firebase Hosting, puoi richiamare la funzione clearData
tramite una voce rewrite
nel file firebase.json
del sito:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Proteggi i dati exportData
con regole di archiviazione
Per mantenere privati i dati esportati dei tuoi utenti, aggiungi regole Cloud Storage che limitano l'accesso all'utente esportatore.
- Visita Archiviazione nella console Firebase .
- Apri la scheda Regole .
- Incolla la seguente regola, quindi fai clic su Pubblica :
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... } }