Wyczyść i eksportuj dane użytkownika końcowego

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:

  1. Edytuj plik user_privacy.json biblioteki, aby odzwierciedlał schemat bazy danych czasu rzeczywistego, Cloud Firestore i Cloud Storage Twojej aplikacji.
  2. Wdróż clearData i exportData jako Cloud Functions.
  3. Zaimplementuj wyzwalacze dla funkcji w swojej aplikacji.
  4. 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 :

  1. Skopiuj dostosowany user_data.json do katalogu functions .
  2. Skopiuj kod z pliku index.js biblioteki prywatności użytkownika do index.js swojego projektu.
    • Jeśli nie używasz clearData , pomiń funkcje clearData , clearDatabaseData , clearFirestoreData i clearStorageData .
    • Jeśli nie używasz exportData , pomiń funkcje exportData , exportDatabaseData , exportFirestoreData i exportStorageData .
  3. 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.

  1. Odwiedź opcję Pamięć w konsoli Firebase .
  2. Otwórz kartę Reguły .
  3. 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:

  1. Edytuj plik user_privacy.json biblioteki, aby odzwierciedlał schemat bazy danych czasu rzeczywistego, Cloud Firestore i Cloud Storage Twojej aplikacji.
  2. Wdróż clearData i exportData jako Cloud Functions.
  3. Zaimplementuj wyzwalacze dla funkcji w swojej aplikacji.
  4. 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 :

  1. Skopiuj dostosowany user_data.json do katalogu functions .
  2. Skopiuj kod z pliku index.js biblioteki prywatności użytkownika do index.js swojego projektu.
    • Jeśli nie używasz clearData , pomiń funkcje clearData , clearDatabaseData , clearFirestoreData i clearStorageData .
    • Jeśli nie używasz exportData , pomiń funkcje exportData , exportDatabaseData , exportFirestoreData i exportStorageData .
  3. 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.

  1. Odwiedź opcję Pamięć w konsoli Firebase .
  2. Otwórz kartę Reguły .
  3. 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...
  }
}