使用刪除使用者資料擴充功能

Delete User Data 擴充功能 (delete-user-data) 可在使用者從 Firebase 專案中刪除時,一併刪除該使用者的資料。你可以將這項擴充功能設定為會刪除以下任一或所有位置中的使用者資料:Cloud Firestore、即時資料庫或 Cloud Storage。這項擴充功能刪除資料的各個觸發條件以使用者的 UserId 為所引鍵。

這項擴充功能有助於尊重使用者隱私權及滿足法規遵循需求。不過,使用這項擴充功能並不保證符合政府和產業法規。

事前準備

安裝擴充功能

如要安裝擴充功能,請按照「安裝 Firebase 擴充功能」頁面的步驟操作。總之,請執行下列任一操作:

安裝擴充功能時,系統會提示您指定多個設定參數:

  • Cloud Functions 位置:

    選取要部署為這項擴充功能建立的函式的位置。通常會希望將函數部署到靠近資料庫的位置。如需選取位置的說明,請參閱位置選取指南

  • Cloud Firestore 路徑:

    在 Cloud Firestore 執行個體中,哪些路徑下包含使用者資料?如果並未使用 Cloud Firestore,請留空。輸入完整路徑,有多個路徑,請以半形逗號加以分隔。您可以使用 {UID} 代表已刪除的使用者 ID。舉例來說,假設你有 usersadmins 集合,這兩個集合都包含使用使用者 ID 做為文件 ID 的文件,那麼你可以輸入 users/{UID},admins/{UID}

  • Cloud Firestore 刪除模式:

    (僅適用於使用 Cloud Firestore paths 參數的情況。) 要如何刪除 Cloud Firestore 文件?如要一併刪除子集合中的文件,請將這個參數設為 recursive

  • 即時資料庫執行個體:

    您要從哪個即時資料庫執行個體刪除使用者資料?

  • 即時資料庫位置:

    (僅適用於提供 Realtime Database instance 參數的情況。) 您要從哪個即時資料庫位置刪除使用者資料?

  • 即時資料庫路徑:

    在即時資料庫執行個體中,哪些路徑下包含使用者資料?如果並未使用即時資料庫,請留空。輸入完整路徑,有多個路徑,請以半形逗號加以分隔。您可以使用 {UID} 代表已刪除的使用者 ID。例如:users/{UID},admins/{UID}

  • Cloud Storage 路徑:

    你要將使用者資料儲存在 Google Cloud Storage 中的哪個位置?如果並未使用 Cloud Storage,請留空。輸入 Storage 值區中檔案或目錄的完整路徑,若有多個路徑,請以半形逗號加以分隔。使用 {UID} 代表已刪除之使用者的使用者 ID,並使用 {DEFAULT} 代表預設的 Storage 值區。

    以下列舉一系列範例:

    • 如要刪除預設值區中所有採用 {UID}-pic.png 檔案命名配置的檔案,請輸入 {DEFAULT}/{UID}-pic.png
    • 如要一併刪除另一個名為 my-app-logs 的值區中,符合 檔案命名架構的所有檔案,請輸入 {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt{UID}-logs.txt
    • 如要一併刪除標示為使用者 ID 的目錄和所有檔案 (例如 media/{UID}),請輸入 {DEFAULT}/{UID}-pic.png,my-app-logs/{UID}-logs.txt,{DEFAULT}/media/{UID}

找出要刪除的資料

這項擴充功能會使用幾種機制來找出要刪除的資料。您必須明確設定這些機制,擴充功能才能刪除資料。擴充功能只會根據提供的機制,刪除明確設定要刪除的資料。

請注意,這兩項服務在行為方面有以下差異:

  • Cloud Firestore:預設行為是淺層刪除文件 (不會刪除子集合)。如要以遞迴方式刪除文件的所有子集合,請將「Cloud Firestore 刪除模式」選項設為「遞迴」。
  • Realtime Database:系統會刪除指定節點中的所有資料。
  • 儲存空間:如果指定目錄路徑,系統會刪除所有檔案和子目錄。

依路徑

設定 Cloud Firestore、即時資料庫和 Cloud Storage 路徑時,可以在路徑中定義 UID 變數,該變數會替換為已驗證使用者的 UID。刪除使用者時,擴充功能會刪除指定路徑中以該 UID 為鍵的所有資料,例如:

  • Cloud Firestore 路徑:users/{UID},admins/{UID}
  • 即時資料庫路徑:likes/{UID}
  • Cloud Storage 路徑:{DEFAULT}/uploads/{UID},{DEFAULT}/avatars/{UID}.jpeg

自動探索 (Cloud Firestore)

如要讓擴充功能自動探索要刪除的 Firestore 文件,請將「Enable auto discovery」(啟用自動探索) 設定參數設為「Yes」(是)。

自動探索功能會自動遍歷資料庫,找出應根據設定刪除的集合和文件。擴充功能會使用下列方法識別這些集合和文件:

  1. 首先,擴充功能會找出資料庫中的所有根集合。如果集合 ID 與使用者 UID 相符,系統會刪除整個集合 (視擴充功能的「Cloud Firestore 刪除模式」設定而定,刪除作業可能是遞迴或淺層)。
  2. 其次,如果集合 ID 不相符,擴充功能會嘗試找出並刪除文件 (如果文件 ID 與使用者的 UID 相符)。
  3. 最後,請針對每份文件執行下列操作: a. 如果目前的搜尋深度 (請見下文) 小於或等於設定的搜尋深度,系統會針對目前文件的所有子集合重複執行程序。 b. 如果已設定搜尋欄位,擴充功能會檢查提供的欄位是否與使用者的 UID 相符。如果找到相符內容,系統就會刪除該文件。

搜尋瀏覽頁數

擴充功能提供可設定的搜尋深度值 (預設為 3)。只有在目前的搜尋深度小於或等於設定的搜尋深度時,才會執行遍歷。目前的搜尋深度取決於目前集合或文件上層集合的深度,例如

/users = 1
/users/<document-id> = 1
/users/<document-id>/comments = 2
/users/<document-id>/comments/<document-id> = 2

這項擴充功能「不會」自動刪除陣列或對應中儲存的 UID,也不會搜尋儲存在深層巢狀子集合中的使用者 ID 鍵控資料 (超過上述指定深度)。