Tiện ích Xoá dữ liệu người dùng (delete-user-data
) cho phép bạn xoá dữ liệu của người dùng khi người dùng đó bị xoá khỏi dự án Firebase. Bạn có thể định cấu hình tiện ích này để xoá dữ liệu người dùng khỏi bất kỳ hoặc tất cả các dịch vụ sau: Cloud Firestore, Cơ sở dữ liệu theo thời gian thực hoặc Cloud Storage. Mỗi trình kích hoạt của tiện ích để xoá dữ liệu được liên kết với UserId
của người dùng.
Tiện ích này hữu ích trong việc tôn trọng quyền riêng tư của người dùng và đáp ứng các yêu cầu tuân thủ. Tuy nhiên, việc sử dụng tiện ích này không đảm bảo việc tuân thủ các quy định của chính phủ và ngành.
Điều kiện tiên quyết
Bạn phải sử dụng Firebase Authentication để quản lý người dùng.
Tiện ích này chỉ xoá dữ liệu khỏi Cloud Firestore, Cơ sở dữ liệu theo thời gian thực và Cloud Storage. Nếu lưu trữ dữ liệu người dùng ở nơi khác, bạn cũng phải xoá dữ liệu người dùng khỏi các nguồn đó khi xoá người dùng.
Cài đặt tiện ích
Để cài đặt tiện ích, hãy làm theo các bước trên trang Cài đặt tiện ích Firebase. Tóm lại, hãy làm theo một trong những cách sau:
Bảng điều khiển của Firebase: Nhấp vào nút sau:
CLI: Chạy lệnh sau:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
Trong quá trình cài đặt tiện ích, bạn sẽ được nhắc chỉ định một số tham số cấu hình:
Vị trí của Cloud Functions:
Chọn vị trí bạn muốn triển khai các hàm được tạo cho tiện ích này. Bạn thường muốn có một vị trí gần cơ sở dữ liệu của mình. Để được trợ giúp về cách chọn vị trí, hãy tham khảo hướng dẫn chọn vị trí.
Đường dẫn Cloud Firestore:
Đường dẫn nào trong thực thể Cloud Firestore của bạn chứa dữ liệu người dùng? Để trống nếu bạn không sử dụng Cloud Firestore. Hãy nhập các đường dẫn đầy đủ, phân tách bằng dấu phẩy. Bạn có thể biểu thị mã nhận dạng người dùng của người dùng đã bị xoá bằng
{UID}
. Ví dụ: nếu có các bộ sưu tậpusers
vàadmins
, và mỗi bộ sưu tập có các tài liệu có Mã nhận dạng người dùng làm mã tài liệu, thì bạn có thể nhậpusers/{UID},admins/{UID}
.Chế độ xoá trong Cloud Firestore:
(Chỉ áp dụng nếu bạn sử dụng tham số
Cloud Firestore paths
.) Bạn muốn xoá tài liệu Cloud Firestore như thế nào? Để xoá cả tài liệu trong tập hợp con, hãy đặt thông số này thànhrecursive
.Phiên bản Cơ sở dữ liệu theo thời gian thực:
Bạn muốn xoá dữ liệu người dùng từ phiên bản Cơ sở dữ liệu theo thời gian thực nào?
Vị trí Cơ sở dữ liệu theo thời gian thực:
(Chỉ áp dụng nếu bạn đã cung cấp tham số
Realtime Database instance
.) Bạn muốn xoá dữ liệu người dùng từ vị trí nào trong Cơ sở dữ liệu theo thời gian thực?Đường dẫn Cơ sở dữ liệu theo thời gian thực:
Đường dẫn nào trong phiên bản Cơ sở dữ liệu theo thời gian thực của bạn chứa dữ liệu người dùng? Để trống nếu bạn không sử dụng Cơ sở dữ liệu theo thời gian thực. Nhập đường dẫn đầy đủ, phân tách bằng dấu phẩy. Bạn có thể dùng
{UID}
để biểu thị Mã nhận dạng người dùng của người dùng đã bị xoá. Ví dụ:users/{UID},admins/{UID}
.Đường dẫn trong Cloud Storage:
Bạn lưu trữ dữ liệu người dùng ở đâu trong Google Cloud Storage? Để trống nếu bạn không sử dụng Cloud Storage. Nhập đường dẫn đầy đủ đến các tệp hoặc thư mục trong Bộ chứa lưu trữ, phân tách bằng dấu phẩy. Sử dụng
{UID}
để biểu thị Mã nhận dạng người dùng của người dùng đã bị xoá và sử dụng{DEFAULT}
để biểu thị Bộ chứa bộ nhớ mặc định của bạn.Dưới đây là một loạt ví dụ:
- Để xoá tất cả tệp trong bộ chứa mặc định có lược đồ đặt tên tệp là
{UID}-pic.png
, hãy nhập{DEFAULT}/{UID}-pic.png
. - Để xoá tất cả các tệp trong một bộ chứa khác có tên là
my-app-logs
với lược đồ đặt tên tệp là{UID}-logs.txt
, hãy nhập{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
. - Để cũng xoá một thư mục có gắn nhãn Mã nhận dạng người dùng và tất cả các tệp trong thư mục đó (chẳng hạn như
media/{UID}
), hãy nhập{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
.
- Để xoá tất cả tệp trong bộ chứa mặc định có lược đồ đặt tên tệp là
Khám phá dữ liệu để xoá
Tiện ích này sử dụng một số cơ chế để khám phá dữ liệu cần xoá. Bạn phải định cấu hình rõ ràng các cơ chế này để tiện ích có thể xoá dữ liệu. Tiện ích này sẽ chỉ xoá dữ liệu được định cấu hình rõ ràng để xoá dựa trên các cơ chế được cung cấp.
Hãy lưu ý những điểm khác biệt về hành vi sau đây giữa từng dịch vụ:
- Cloud Firestore: hành vi mặc định là xoá một tài liệu một cách nông (các bộ sưu tập con sẽ không bị xoá). Để xoá đệ quy tất cả các bộ sưu tập con của một tài liệu, hãy đặt tuỳ chọn "Chế độ xoá Cloud Firestore" thành "Đệ quy".
- Cơ sở dữ liệu theo thời gian thực: tất cả dữ liệu tại nút đã chỉ định sẽ bị xoá.
- Bộ nhớ: nếu bạn chỉ định đường dẫn thư mục, thì tất cả tệp và thư mục con sẽ bị xoá.
Theo đường dẫn
Khi định cấu hình đường dẫn Cloud Firestore, Cơ sở dữ liệu theo thời gian thực và Bộ nhớ trên đám mây, bạn có thể xác định biến UID
trong các đường dẫn sẽ được thay thế bằng UID của người dùng đã xác thực. Khi một người dùng bị xoá, tiện ích sẽ xoá tất cả dữ liệu được khoá trên UID đó tại các đường dẫn đã cho, ví dụ:
- (Các) đường dẫn trên Cloud Firestore:
users/{UID},admins/{UID}
- (Các) đường dẫn Cơ sở dữ liệu theo thời gian thực:
likes/{UID}
- (Các) đường dẫn đến Bộ nhớ trên đám mây:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
Tự động khám phá (Cloud Firestore)
Để cho phép tiện ích tự động khám phá các tài liệu Firestore cần xoá, hãy đặt tham số cấu hình "Bật tính năng tự động khám phá" thành "Có".
Tính năng tự động khám phá hoạt động bằng cách tự động truyền tải qua cơ sở dữ liệu để tìm các bộ sưu tập và tài liệu cần phải xoá theo cấu hình của bạn. Tiện ích này xác định các bộ sưu tập và tài liệu đó bằng phương pháp sau:
- Trước tiên, tiện ích này sẽ tìm tất cả các bộ sưu tập gốc trong cơ sở dữ liệu. Nếu mã của một bộ sưu tập khớp với mã nhận dạng duy nhất (UID) của người dùng, thì toàn bộ bộ sưu tập đó sẽ bị xoá (việc xoá có thể là đệ quy hoặc nông, tuỳ thuộc vào cấu hình của tiện ích cho "chế độ xoá Cloud Firestore").
- Thứ hai, nếu mã bộ sưu tập không khớp, tiện ích sẽ cố gắng xác định và xoá một tài liệu nếu mã tài liệu của tài liệu đó khớp với mã nhận dạng duy nhất (UID) của người dùng.
- Cuối cùng, đối với mỗi tài liệu: a. Nếu độ sâu tìm kiếm hiện tại (xem bên dưới) nhỏ hơn hoặc bằng độ sâu tìm kiếm đã định cấu hình, thì quá trình này sẽ được lặp lại cho tất cả các bộ sưu tập con của tài liệu hiện tại. b. Nếu bạn đã định cấu hình các trường tìm kiếm, thì tiện ích sẽ kiểm tra xem các trường đã cung cấp có khớp với UID của người dùng hay không. Nếu thấy khớp, tài liệu đó sẽ bị xoá.
Số trang trung bình được xem sau mỗi tìm kiếm
Tiện ích này cung cấp giá trị độ sâu tìm kiếm có thể định cấu hình (mặc định là 3). Truyền tải sẽ chỉ được thực thi nếu độ sâu tìm kiếm hiện tại nhỏ hơn hoặc bằng độ sâu tìm kiếm đã định cấu hình. Độ sâu tìm kiếm hiện tại dựa trên độ sâu của bộ sưu tập hiện tại hoặc bộ sưu tập mẹ của tài liệu, ví dụ:
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
Tiện ích này SẼ KHÔNG tự động xoá UID được lưu trữ trong mảng hoặc bản đồ, đồng thời sẽ không tìm kiếm dữ liệu được khoá bằng mã nhận dạng người dùng được lưu trữ trong các bộ sưu tập con lồng nhau sâu hơn độ sâu được chỉ định ở trên.