Xóa và xuất dữ liệu người dùng cuối

Để giúp bạn giúp người dùng kiểm soát dữ liệu của họ, nhóm Firebase đã tạo một thư viện giúp đơn giản hóa hai quy trình dữ liệu người dùng phổ biến:

  • clearData : xóa dữ liệu của người dùng khỏi các dịch vụ Firebase cụ thể (hiện tại là Cơ sở dữ liệu thời gian thực, Firestore và Bộ lưu trữ) khi họ xóa tài khoản của mình thông qua Xác thực Firebase.

  • exportData : lưu bản sao dữ liệu của người dùng từ các dịch vụ Firebase vào chuỗi JSON và tải dữ liệu đó lên Cloud Storage để họ có thể dễ dàng tải xuống cho mình.

Hãy tiếp tục đọc để tìm hiểu cách thêm các chức năng vào ứng dụng của bạn hoặc chuyển ngay sang mã tại kho lưu trữ GitHub về quyền riêng tư của người dùng Firebase .

Thêm clearData hoặc exportData vào ứng dụng của bạn

Các hàm clearData exportData trong thư viện được triển khai dưới dạng Hàm đám mây hoạt động trên dữ liệu trong Cơ sở dữ liệu thời gian thực, Cloud Storage và Cloud Firestore. Việc thêm các chức năng vào ứng dụng của riêng bạn là một quá trình gồm ba bước:

  1. Chỉnh sửa tệp user_privacy.json của thư viện để phản ánh lược đồ Cơ sở dữ liệu thời gian thực, Cloud Firestore và Cloud Storage của ứng dụng của bạn.
  2. Triển khai clearDataexportData dưới dạng Chức năng đám mây.
  3. Triển khai trình kích hoạt cho các chức năng trong ứng dụng của bạn.
  4. Bảo mật dữ liệu clearData bằng các quy tắc lưu trữ.

Chỉnh sửa tệp user_privacy.json của thư viện

Để bắt đầu, hãy sao chép hoặc tải xuống kho lưu trữ GitHub về quyền riêng tư của người dùng Firebase .

Khi bạn đã hoàn thành việc đó, hãy mở functions/user_privacy.json trong trình soạn thảo văn bản. Tệp json có một loạt đường dẫn có thể tùy chỉnh mà các hàm clearDataexportData sử dụng để tìm dữ liệu ứng dụng của bạn trong Cơ sở dữ liệu thời gian thực, Cloud Firestore và Cloud Storage. Nếu ứng dụng của bạn chỉ sử dụng một hoặc hai dịch vụ trong số đó, hãy bắt đầu bằng cách xóa các đối tượng JSON được liên kết với các dịch vụ không sử dụng.

Khi các đối tượng không còn nữa, bạn có thể bắt đầu thay thế các giá trị giữ chỗ của các dịch vụ còn lại bằng cấu trúc dữ liệu thực tế mà ứng dụng của bạn sử dụng.

Thêm đường dẫn Cơ sở dữ liệu thời gian thực vào dữ liệu người dùng

Để tùy chỉnh user_privacy.json cho phiên bản Cơ sở dữ liệu thời gian thực của ứng dụng, hãy thay thế danh sách các chuỗi giữ chỗ trong "database" bằng các đường dẫn thực tế đến dữ liệu người dùng:

...
  "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
    ]
  },
...

Nếu chỉ muốn thêm một trong các hàm vào ứng dụng của mình, bạn có thể xóa đối tượng của hàm kia thay vì điền dữ liệu vào đó.

Thêm đối tượng Cloud Firestore chứa dữ liệu người dùng

Để tùy chỉnh user_privacy.json cho phiên bản Cloud Firestore của ứng dụng của bạn, hãy thay thế danh sách các đối tượng giữ chỗ trong "firestore" bằng các đối tượng Cloud Firestore thực tế chứa dữ liệu người dùng:

...
  "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
    ]
  },
...

Nếu chỉ muốn thêm một trong các hàm vào ứng dụng của mình, bạn có thể xóa đối tượng của hàm kia thay vì điền dữ liệu vào đó.

Thêm nhóm Cloud Storage và tên tệp cùng với dữ liệu người dùng

Để tùy chỉnh user_privacy.json cho phiên bản Cloud Storage của ứng dụng, hãy thay thế nhóm lưu trữ giữ chỗ và tên tệp trong phần "storage" bằng các giá trị thực tế:

...
  "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"]
    ]
  },
...

Nếu chỉ muốn thêm một trong các hàm vào ứng dụng của mình, bạn có thể xóa đối tượng của hàm kia thay vì điền dữ liệu vào đó.

Triển khai clearDataexportData dưới dạng Chức năng đám mây

Nếu bạn chưa quen với Cloud Functions, hãy đọc cách sử dụng chúng trong hướng dẫn Bắt đầu Cloud Functions .

Khi bạn đã cảm thấy thoải mái với Chức năng đám mây, hãy thêm các hàm clearDataexportData vào dự án của bạn:

  1. Sao chép user_data.json tùy chỉnh của bạn vào thư mục functions của bạn.
  2. Sao chép mã từ index.js của thư viện quyền riêng tư người dùng sang index.js của dự án của bạn.
    • Nếu bạn không sử dụng clearData , hãy bỏ qua các hàm clearData , clearDatabaseData , clearFirestoreDataclearStorageData .
    • Nếu bạn không sử exportData , hãy bỏ qua các hàm exportData , exportDatabaseData , exportFirestoreData exportStorageData .
  3. Triển khai các chức năng của bạn.

Triển khai trình kích hoạt cho clearData exportData

Mỗi chức năng yêu cầu một trình kích hoạt khác nhau:

  • clearData : được kích hoạt khi người dùng xóa tài khoản của họ thông qua Xác thực.
  • exportData : được kích hoạt bởi một yêu cầu HTTP.

Triển khai trình kích hoạt clearData

Để kích hoạt sự kiện clearData , bạn cần sử dụng phương thức từ Xác thực. Nếu bạn chưa thực hiện việc này, hãy thêm Xác thực vào ứng dụng của bạn: nền tảng Apple , Android hoặc web .

Sau đó, thêm cách gọi phương thức delete của SDK xác thực cho nền tảng của bạn:

iOS+

FirebaseAuth.User.delete { error in
  if let error = error {
    print("Error deleting user: \(error)")
  }
}

Android

FirebaseAuth.getCurrentUser().delete();

Web

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();
  }
});

Triển khai trình kích hoạt exportData

Để triển khai trình kích hoạt exportData , hãy thêm nút hoặc liên kết vào ứng dụng của bạn để gọi hàm thông qua yêu cầu HTTP. Đọc thêm về cách gọi hàm qua HTTP trong phần Gọi hàm qua yêu cầu HTTP .

Yêu cầu chi tiết:

  • Loại: POST
  • URL: https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
  • Nội dung: <var>CURRENT_USER'S_UID</var>

Gọi hàm trực tiếp trong Firebase Hosting

Nếu ứng dụng của bạn là một ứng dụng web được lưu trữ trên Firebase Hosting, bạn có thể gọi hàm clearData thông qua mục rewrite trong tệp firebase.json của trang web:

  "hosting": {
    "rewrites": [
       {"source": "/exportData", "function": "exportData"}
    ]
  }

Bảo mật dữ liệu exportData bằng các quy tắc lưu trữ

Để giữ dữ liệu đã xuất của người dùng ở chế độ riêng tư, hãy thêm các quy tắc Cloud Storage hạn chế quyền truy cập đối với người dùng xuất.

  1. Truy cập Bộ nhớ trong bảng điều khiển Firebase .
  2. Mở tab Quy tắc .
  3. Dán quy tắc sau, sau đó nhấp vào Xuất bản :
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...
  }
}