透過刪除使用者資料擴充 ( delete-user-data
),您可以在從 Firebase 專案中刪除使用者時刪除該使用者的資料。您可以設定此擴充功能以從以下任何或全部位置刪除使用者資料:Cloud Firestore、即時資料庫或雲端儲存。擴充功能刪除資料的每個觸發器都以使用者的UserId
為關鍵字。
此擴充功能對於尊重用戶隱私和滿足合規性要求非常有用。但是,使用此擴充功能並不能保證遵守政府和行業法規。
先決條件
您必須使用Firebase 驗證來管理您的使用者。
此擴充功能僅刪除Cloud Firestore 、即時資料庫和Cloud Storage中的資料。如果您將使用者資料儲存在其他地方,則在刪除使用者時也應該從這些來源中刪除使用者資料。
安裝擴充
若要安裝擴充程序,請按照安裝 Firebase 擴充功能頁面上的步驟操作。總之,請執行以下操作之一:
Firebase 控制台:按一下以下按鈕:
CLI:執行以下命令:
firebase ext:install firebase/delete-user-data --project=projectId-or-alias
在安裝擴充期間,系統將提示您指定一些設定參數:
雲函數位置:
選擇要部署為此擴充功能建立的功能的位置。您通常需要一個靠近資料庫的位置。如需選擇位置的協助,請參閱位置選擇指南。
Cloud Firestore 路徑:
Cloud Firestore 實例中的哪些路徑包含使用者資料?如果您不使用 Cloud Firestore,請留空。輸入完整路徑,以逗號分隔。您可以使用
{UID}
表示已刪除使用者的使用者 ID。例如,如果您有集合users
和admins
,並且每個集合都有以 User ID 作為文檔 ID 的文檔,則您可以輸入users/{UID},admins/{UID}
。Cloud Firestore 刪除模式:
(僅當您使用
Cloud Firestore paths
參數時才適用。)您希望如何刪除 Cloud Firestore 文件?若要同時刪除子集合中的文檔,請將此參數設為recursive
。即時資料庫執行個體:
您要從哪個即時資料庫執行個體中刪除使用者資料?
即時資料庫位置:
(僅當您提供
Realtime Database instance
個體參數時才適用。)您要從哪個即時資料庫位置刪除使用者資料?即時資料庫路徑:
即時資料庫實例中的哪些路徑包含使用者資料?如果您不使用即時資料庫,請保留為空。輸入完整路徑,以逗號分隔。您可以使用
{UID}
表示已刪除使用者的使用者 ID。例如:users/{UID},admins/{UID}
。雲端儲存路徑:
您在 Google Cloud Storage 的什麼位置儲存使用者資料?如果您不使用雲端存儲,請留空。輸入儲存桶中檔案或目錄的完整路徑,以逗號分隔。使用
{UID}
代表已刪除使用者的使用者 ID,使用{DEFAULT}
代表您的預設儲存桶。這是一系列範例:
- 若要刪除預設儲存桶中文件命名方案為
{UID}-pic.png
所有文件,請輸入{DEFAULT}/{UID}-pic.png
。 - 若要同時刪除另一個名為
my-app-logs
且文件命名方案為{UID}-logs.txt
的儲存桶中的所有文件,請輸入{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt
。 - 若要同時刪除帶有使用者 ID 標籤的目錄及其所有檔案(例如
media/{UID}
),請輸入{DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}
。
- 若要刪除預設儲存桶中文件命名方案為
發現要刪除的數據
此擴充功能使用一些機制來發現要刪除的資料。必須明確配置這些機制才能使擴充刪除資料。此擴充功能將僅刪除明確配置為根據提供的機制刪除的資料。
請注意每項服務之間的以下行為差異:
- Cloud Firestore:預設行為是淺層刪除文件(子集合不會被刪除)。若要遞歸刪除文件的所有子集合,請將「Cloud Firestore 刪除模式」選項設為「遞迴」。
- 即時資料庫:指定節點的所有資料將被刪除。
- 儲存:如果指定目錄路徑,則所有檔案和子目錄將被刪除。
按路徑
配置 Cloud Firestore、即時資料庫和雲端儲存路徑時,可以在路徑中定義UID
變量,該變數將替換為經過驗證的使用者的 UID。刪除使用者後,擴充功能將刪除給定路徑中該 UID 上鍵入的所有數據,例如:
- Cloud Firestore 路徑:
users/{UID},admins/{UID}
- 即時資料庫路徑:
likes/{UID}
- 雲端儲存路徑:
{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg
自動發現 (Cloud Firestore)
若要使擴充功能能夠自動發現要刪除的 Firestore 文檔,請將「啟用自動發現」設定參數設為「是」。
自動發現的工作原理是自動遍歷資料庫以查找應根據您的配置刪除的集合和文件。此擴充功能透過以下方法識別這些集合和文件:
- 首先,擴展查找資料庫中的所有根集合。如果集合的 ID 與使用者的 UID 匹配,則會刪除整個集合(刪除是遞歸刪除或淺刪除,取決於擴充功能的「Cloud Firestore 刪除模式」配置)。
- 其次,如果集合 ID 不匹配,如果文件 ID 與使用者的 UID 匹配,則擴充功能將嘗試識別並刪除該文件。
- 最後,對於每個文件:如果目前搜尋深度(見下文)小於或等於配置的搜尋深度,則將對目前文件的所有子集合重複此程序。 b.如果已配置搜尋字段,擴充功能將檢查提供的字段是否與使用者的 UID 相符。如果找到匹配項,該文件將被刪除。
搜尋深度
此擴充功能提供了可配置的搜尋深度值(預設為 3)。僅噹噹前搜尋深度小於或等於配置的搜尋深度時才會執行遍歷。目前搜尋深度是基於目前集合或文件父集合的深度,例如
/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2
此擴充功能不會自動刪除儲存在陣列或映射中的 UID,也不會搜尋儲存在超過上述指定深度的深層巢狀子集合中的使用者 ID 鍵入的資料。