Czyszczenie i eksportowanie danych użytkowników

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:

  1. Edytuj plik user_privacy.json biblioteki, aby uwzględnić schemat Realtime Database, Cloud Firestore i Cloud Storage Twojej aplikacji.
  2. Wdróż clearData i exportData jako Cloud Functions.
  3. Zaimplementuj aktywatory funkcji w aplikacji.
  4. 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:

  1. Skopiuj dostosowany plik user_data.json do katalogu functions.
  2. Skopiuj kod z biblioteki prywatności użytkownika index.js do biblioteki index.js 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. 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.

  1. W konsoli Firebase otwórz Miejsce na dane.
  2. Otwórz kartę Reguły.
  3. 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...
  }
}