Aby pomóc Ci w zarządzaniu danymi użytkowników, zespół Firebase stworzył bibliotekę, która upraszcza 2 typowe procesy związane z danymi użytkowników:
clearData
: usuwa dane użytkownika z konkretnych usług Firebase (obecnie w bazie danych czasu rzeczywistego, Firestore i pamięci masowej), gdy użytkownik usunie swoje konto. do Firebase Authentication.exportData
: zapisuje kopię danych użytkownika z usług Firebase w ciągu znaków JSON i przesyła je do Cloud Storage, aby użytkownik mógł je łatwo pobrać.
Czytaj dalej, aby dowiedzieć się, jak dodać funkcje do swojej aplikacji, lub przejdź od razu do kodu na stronie Repozytorium GitHub prywatności użytkownika Firebase.
Dodaj clearData
lub exportData
do swojej aplikacji
Funkcje clearData
i exportData
w bibliotece są zaimplementowane jako Cloud Functions i wykorzystują dane w funkcjach Realtime Database, Cloud Storage i Cloud Firestore. Dodawanie funkcji we własnej aplikacji składa się z 3 etapów:
- Edytuj plik
user_privacy.json
biblioteki, aby uwzględnić schemat Realtime Database, Cloud Firestore i Cloud Storage Twojej aplikacji. - Wdróż
clearData
iexportData
jako Cloud Functions. - Zaimplementuj aktywatory funkcji w aplikacji.
- Zabezpiecz dane
clearData
za pomocą reguł przechowywania.
Edytuj plik user_privacy.json
biblioteki
Aby rozpocząć, skopiuj lub pobierz repozytorium GitHub prywatności użytkownika Firebase.
Następnie otwórz plik functions/user_privacy.json
w edytorze tekstu. Plik json zawiera serię możliwych do dostosowania ścieżek, których funkcje clearData
i exportData
używają do znajdowania danych aplikacji w środowiskach Realtime Database, Cloud Firestore i Cloud Storage. Jeśli Twoja aplikacja korzysta tylko z jednej lub dwóch z tych usług, zacznij od usunięcia obiektów JSON powiązanych z nieużywanymi usługami.
Po usunięciu obiektów można rozpocząć zastępowanie pozostałych usług wartości zastępczych rzeczywistymi strukturami danych używanymi przez aplikację.
Dodaj Realtime Database ścieżki do danych użytkownika
Aby dostosować user_privacy.json
do instancji Realtime Database aplikacji, zastąp listę ciągów zastępczych w elemencie "database"
rzeczywistymi ścieżkami do danych użytkownika:
... "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 ] }, ...
Jeśli chcesz dodać do swojej aplikacji tylko jedną z tych funkcji, możesz usunąć obiekt innej funkcji, zamiast wypełniać go danymi.
Dodaj Cloud Firestore obiektów zawierających dane użytkownika
Aby dostosować obiekt user_privacy.json
do instancji Cloud Firestore aplikacji, zastąp listę obiektów zastępczych w elemencie "firestore"
rzeczywistymi obiektami Cloud Firestore zawierającymi dane użytkownika:
... "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 ] }, ...
Jeśli chcesz dodać do swojej aplikacji tylko jedną z tych funkcji, możesz usunąć obiekt innej funkcji, zamiast wypełniać go danymi.
Dodaj zasobnik Cloud Storage i nazwę pliku z danymi użytkownika
Aby dostosować user_privacy.json
do instancji Cloud Storage aplikacji, zastąp zastępczy zasobnik na dane i nazwę pliku w polu "storage"
rzeczywistymi wartościami:
... "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"] ] }, ...
Jeśli chcesz dodać do swojej aplikacji tylko jedną z tych funkcji, możesz usunąć obiekt innej funkcji, zamiast wypełniać go danymi.
Wdróż clearData
i exportData
jako Cloud Functions
Jeśli Cloud Functions to dla Ciebie nowość, zapoznaj się z przewodnikiem Cloud Functions dla początkujących, z którego dowiesz się, jak z nich korzystać.
Gdy posługujesz się narzędziem Cloud Functions, dodaj do projektu funkcje clearData
i exportData
:
- Skopiuj dostosowany plik
user_data.json
do katalogufunctions
. - Skopiuj kod z biblioteki prywatności użytkownika
index.js
do bibliotekiindex.js
projektu.- Jeśli nie używasz
clearData
, pomiń funkcjeclearData
,clearDatabaseData
,clearFirestoreData
iclearStorageData
. - Jeśli nie używasz
exportData
, pomiń funkcjeexportData
,exportDatabaseData
,exportFirestoreData
iexportStorageData
.
- Jeśli nie używasz
- wdrożyć funkcje,
Wdróż aktywatory dla: clearData
i exportData
Każda funkcja wymaga innego aktywatora:
clearData
: wywoływane, gdy użytkownik usunie swoje konto za pomocą usługi Authentication.exportData
: wywołane przez żądanie HTTP.
Wdróż regułę clearData
Aby wywołać zdarzenie clearData
, musisz użyć metody z Authentication. Jeśli
jeszcze go nie masz, dodaj Authentication do swojej aplikacji: Platformy Apple, Android lub sieć.
Następnie dodaj sposób wywoływania metody delete
pakietu SDK Authentication na swojej platformie:
iOS+
FirebaseAuth.User.delete { error in
if let error = error {
print("Error deleting user: \(error)")
}
}
Android
FirebaseAuth.getCurrentUser().delete();
Sieć
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();
}
});
Wdróż regułę exportData
Aby wdrożyć aktywator exportData
, dodaj do aplikacji przycisk lub link, który wywołuje
za pomocą żądania HTTP. Więcej informacji o funkcjach wywoływania
przez HTTP w sekcji Wywoływanie funkcji przez żądania HTTP.
Szczegóły żądania:
- Typ:
POST
- Adres URL:
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
- Treść:
<var>CURRENT_USER'S_UID</var>
Wywołaj funkcję bezpośrednio w funkcji Firebase Hosting
Jeśli Twoja aplikacja jest aplikacją internetową hostowaną na serwerze Firebase Hosting, możesz wywołać
clearData
przez wpis rewrite
w pliku firebase.json
witryny:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Zabezpiecz dane exportData
za pomocą reguł przechowywania
Aby użytkownicy wyeksportowane dane prywatne, dodaj Cloud Storage reguł, które ograniczają dostęp użytkownika eksportującego.
- W konsoli Firebase otwórz Miejsce na dane.
- Otwórz kartę Reguły.
- Wklej tę regułę i kliknij Opublikuj:
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... } }