Aby pomóc Ci pomóc użytkownikom kontrolować ich dane, zespół Firebase stworzył bibliotekę, która upraszcza dwa typowe procesy związane z danymi użytkowników:
clearData
: usuwa dane użytkownika z określonych usług Firebase (obecnie Realtime Database, Firestore i Storage), gdy usuwa on swoje konto poprzez uwierzytelnianie Firebase.exportData
: zapisuje kopię danych użytkownika z usług Firebase w ciągu JSON i przesyła je do Cloud Storage, aby użytkownik mógł łatwo pobrać je dla siebie.
Czytaj dalej, aby dowiedzieć się, jak dodać funkcje do swojej aplikacji, lub od razu przejdź do kodu w repozytorium GitHub dotyczącym prywatności użytkowników Firebase .
Dodaj clearData
lub exportData
do swojej aplikacji
Funkcje clearData
i exportData
w bibliotece są zaimplementowane jako funkcje chmury, które działają na danych w bazach danych Realtime Database, Cloud Storage i Cloud Firestore. Dodawanie funkcji we własnej aplikacji składa się z trzech etapów:
- Edytuj plik
user_privacy.json
biblioteki, aby odzwierciedlał schemat bazy danych czasu rzeczywistego, Cloud Firestore i Cloud Storage Twojej aplikacji. - Wdróż
clearData
iexportData
jako Cloud Functions. - Zaimplementuj wyzwalacze dla funkcji w swojej aplikacji.
- Zabezpiecz dane
clearData
za pomocą reguł przechowywania.
Edytuj plik user_privacy.json
biblioteki
Aby rozpocząć, sklonuj lub pobierz repozytorium GitHub dotyczące prywatności użytkowników Firebase .
Gdy już to zrobisz, otwórz functions/user_privacy.json
w edytorze tekstu. Plik json zawiera szereg dostosowywalnych ścieżek, których używają funkcje clearData
i exportData
do wyszukiwania danych aplikacji w bazach danych 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żesz zacząć zastępować wartości zastępcze pozostałych usług rzeczywistymi strukturami danych używanymi przez aplikację.
Dodaj ścieżki bazy danych czasu rzeczywistego do danych użytkownika
Aby dostosować user_privacy.json
dla instancji bazy danych czasu rzeczywistego w aplikacji, zastąp listę ciągów zastępczych w sekcji "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 funkcji, możesz usunąć obiekt drugiej funkcji, zamiast wypełniać go swoimi danymi.
Dodaj obiekty Cloud Firestore zawierające dane użytkownika
Aby dostosować user_privacy.json
dla instancji Cloud Firestore swojej aplikacji, zastąp listę obiektów zastępczych w sekcji "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 funkcji, możesz usunąć obiekt drugiej funkcji, zamiast wypełniać go swoimi danymi.
Dodaj zasobnik Cloud Storage i nazwę pliku z danymi użytkownika
Aby dostosować user_privacy.json
dla instancji Cloud Storage swojej aplikacji, zastąp zastępczy zasobnik miejsca na dane i nazwę pliku w sekcji "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 funkcji, możesz usunąć obiekt drugiej funkcji, zamiast wypełniać go swoimi danymi.
Wdróż clearData
i exportData
jako Cloud Functions
Jeśli nie znasz jeszcze funkcji Cloud Functions, przeczytaj, jak z nich korzystać, w przewodniku wprowadzającym dotyczącym funkcji Cloud Functions .
Gdy już oswoisz się z funkcjami Cloud, dodaj do swojego projektu funkcje clearData
i exportData
:
- Skopiuj dostosowany
user_data.json
do katalogufunctions
. - Skopiuj kod z pliku
index.js
biblioteki prywatności użytkownika doindex.js
swojego 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
- Wdróż swoje funkcje.
Zaimplementuj wyzwalacze dla clearData
i exportData
Każda funkcja wymaga innego wyzwalacza:
-
clearData
: wyzwalane, gdy użytkownik usunie swoje konto poprzez uwierzytelnienie. -
exportData
: wywoływane przez żądanie HTTP.
Zaimplementuj wyzwalacz clearData
Aby wywołać zdarzenie clearData
, musisz użyć metody z Uwierzytelniania. Jeśli jeszcze tego nie zrobiłeś, dodaj Uwierzytelnianie do swojej aplikacji: platformy Apple , Android lub internet .
Następnie dodaj sposób wywoływania metody delete
zestawu SDK uwierzytelniania dla swojej platformy:
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();
}
});
Zaimplementuj wyzwalacz exportData
Aby zaimplementować wyzwalacz exportData
, dodaj do aplikacji przycisk lub link, który wywołuje funkcję za pośrednictwem żądania HTTP. Przeczytaj więcej na temat wywoływania funkcji przez HTTP w części Funkcje wywoływania poprzez żądania HTTP .
Szczegóły żądania:
- Wpisz:
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 Hostingu Firebase
Jeśli Twoja aplikacja jest aplikacją internetową hostowaną w Firebase Hosting, możesz wywołać funkcję clearData
poprzez rewrite
wpisu w pliku firebase.json
witryny:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Zabezpiecz dane exportData
danych za pomocą reguł przechowywania
Aby zachować prywatność wyeksportowanych danych użytkowników, dodaj reguły Cloud Storage, które ograniczają dostęp do eksportującego użytkownika.
- Odwiedź opcję Pamięć w konsoli Firebase .
- Otwórz kartę Reguły .
- Wklej następującą regułę, a następnie kliknij Publikuj :
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... } }
Dodaj clearData
lub exportData
do swojej aplikacji
Funkcje clearData
i exportData
w bibliotece są zaimplementowane jako funkcje chmury, które działają na danych w bazach danych Realtime Database, Cloud Storage i Cloud Firestore. Dodawanie funkcji we własnej aplikacji składa się z trzech etapów:
- Edytuj plik
user_privacy.json
biblioteki, aby odzwierciedlał schemat bazy danych czasu rzeczywistego, Cloud Firestore i Cloud Storage Twojej aplikacji. - Wdróż
clearData
iexportData
jako Cloud Functions. - Zaimplementuj wyzwalacze dla funkcji w swojej aplikacji.
- Zabezpiecz dane
clearData
za pomocą reguł przechowywania.
Edytuj plik user_privacy.json
biblioteki
Aby rozpocząć, sklonuj lub pobierz repozytorium GitHub dotyczące prywatności użytkowników Firebase .
Gdy już to zrobisz, otwórz functions/user_privacy.json
w edytorze tekstu. Plik json zawiera szereg dostosowywalnych ścieżek, których używają funkcje clearData
i exportData
do wyszukiwania danych aplikacji w bazach danych 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żesz zacząć zastępować wartości zastępcze pozostałych usług rzeczywistymi strukturami danych używanymi przez aplikację.
Dodaj ścieżki bazy danych czasu rzeczywistego do danych użytkownika
Aby dostosować user_privacy.json
dla instancji bazy danych czasu rzeczywistego w aplikacji, zastąp listę ciągów zastępczych w sekcji "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 funkcji, możesz usunąć obiekt drugiej funkcji, zamiast wypełniać go swoimi danymi.
Dodaj obiekty Cloud Firestore zawierające dane użytkownika
Aby dostosować user_privacy.json
dla instancji Cloud Firestore swojej aplikacji, zastąp listę obiektów zastępczych w sekcji "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 funkcji, możesz usunąć obiekt drugiej funkcji, zamiast wypełniać go swoimi danymi.
Dodaj zasobnik Cloud Storage i nazwę pliku z danymi użytkownika
Aby dostosować user_privacy.json
dla instancji Cloud Storage swojej aplikacji, zastąp zastępczy zasobnik miejsca na dane i nazwę pliku w sekcji "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 funkcji, możesz usunąć obiekt drugiej funkcji, zamiast wypełniać go swoimi danymi.
Wdróż clearData
i exportData
jako Cloud Functions
Jeśli nie znasz jeszcze funkcji Cloud Functions, przeczytaj, jak z nich korzystać, w przewodniku wprowadzającym dotyczącym funkcji Cloud Functions .
Gdy już oswoisz się z funkcjami Cloud, dodaj do swojego projektu funkcje clearData
i exportData
:
- Skopiuj dostosowany
user_data.json
do katalogufunctions
. - Skopiuj kod z pliku
index.js
biblioteki prywatności użytkownika doindex.js
swojego 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
- Wdróż swoje funkcje.
Zaimplementuj wyzwalacze dla clearData
i exportData
Każda funkcja wymaga innego wyzwalacza:
-
clearData
: wyzwalane, gdy użytkownik usunie swoje konto poprzez uwierzytelnienie. -
exportData
: wywoływane przez żądanie HTTP.
Zaimplementuj wyzwalacz clearData
Aby wywołać zdarzenie clearData
, musisz użyć metody z Uwierzytelniania. Jeśli jeszcze tego nie zrobiłeś, dodaj Uwierzytelnianie do swojej aplikacji: platformy Apple , Android lub internet .
Następnie dodaj sposób wywoływania metody delete
zestawu SDK uwierzytelniania dla swojej platformy:
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();
}
});
Zaimplementuj wyzwalacz exportData
Aby zaimplementować wyzwalacz exportData
, dodaj do aplikacji przycisk lub link, który wywołuje funkcję za pośrednictwem żądania HTTP. Przeczytaj więcej na temat wywoływania funkcji przez HTTP w części Funkcje wywoływania poprzez żądania HTTP .
Szczegóły żądania:
- Wpisz:
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 Hostingu Firebase
Jeśli Twoja aplikacja jest aplikacją internetową hostowaną w Firebase Hosting, możesz wywołać funkcję clearData
poprzez rewrite
wpisu w pliku firebase.json
witryny:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Zabezpiecz dane exportData
danych za pomocą reguł przechowywania
Aby zachować prywatność wyeksportowanych danych użytkowników, dodaj reguły Cloud Storage, które ograniczają dostęp do eksportującego użytkownika.
- Odwiedź opcję Pamięć w konsoli Firebase .
- Otwórz kartę Reguły .
- Wklej następującą regułę, a następnie kliknij Publikuj :
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... } }