使用 Firebase 存儲隱私設置

Firebase 可以輕鬆收集和追蹤使用者在收集和處理資料方面的偏好:

  1. 設定隱私設定
  2. 更新您的應用程式以使用隱私設置
  3. 追蹤隱私設定的更改

設定隱私設定

要收集和儲存隱私設置,您需要兩件事:提示使用者輸入隱私設置的 UI 以及儲存這些設定的方法。

建立隱私設定 UI

隱私設定 UI 的格式由您決定。建置 UI 時需要考慮以下幾點:

了解您收集的數據

花一些時間對您的應用程式儲存或處理的使用者資料進行分類。請務必包含您的應用程式直接收集的資料以及您的應用程式所使用的服務所收集的資料。對於 Firebase 服務,檢查Firebase 處理的最終用戶資料範例可能會有所幫助。

設計你的 UI 來幫助用戶

嘗試用簡潔、用戶友好的術語描述您收集的資料類型,包括收集的資料如何幫助您的應用程式或將如何使用。

如果您的應用程式需要某些資料才能正常運行,您可以透過停用 UI 上的提交按鈕來避免錯誤,直到使用者選擇您的應用程式運行所需的選項。考慮一下您的應用程式對於啟用某些類型的資料收集而不是其他類型的資料收集的使用者來說應該是什麼樣的流程。

在使用者同意隱私權政策之前,提交按鈕將被停用在使用者同意隱私權政策之前,提交按鈕將被停用

儲存隱私設定

您在何處以及如何儲存用戶的隱私設定也取決於您。您可以使用任何可靠的標識符,將使用者與他們在隱私設定 UI 中所做的選擇相關聯。

一種常見的方法是使用標識符作為在應用程式中使用的資料儲存中儲存首選項的密鑰。例如,您可以使用 Firebase Auth UID 作為即時資料庫實例中的鍵,或使用 Firebase 實例 ID 來組織 Firestore 文件集合。

範例:使用身份驗證 UID 和即時資料庫儲存使用者首選項

考慮一個使用 Firebase Auth UID 和 Firebase 即時資料庫來儲存使用者首選項的社群媒體應用程式。

為了確保用戶資料的安全和私密,該應用程式將他們的首選項保存到資料庫的單獨部分,並具有限制性安全規則,僅允許該用戶讀取或寫入。該應用程式還驗證預期值只是布林值,並且不接受意外值:

"privacy": {
  "$uid": {
    ".write": "auth.uid === $uid",
    ".read": "auth.uid === $uid",
    "data_processing": {
      ".validate": "newData.isBoolean()"
    },
    "content": {
      ".validate": "newData.isBoolean()"
    },
    "social": {
      ".validate": "newData.isBoolean()"
    },
    "$other": {
      ".validate": "false"
    }
  }
}

更新您的應用程式以使用隱私設置

在應用程式中提供使用者隱私設定後,您可以為啟用了特定設定的使用者啟用特定功能。讓您的應用程式在載入收集資料或使用收集的資料的功能之前檢查設定。對於某個功能,請考慮如果沒有該功能,最佳體驗是什麼。例如,如果應用程式是微博平台,並且用戶已禁止該應用程式儲存其帖子,則最好的用戶體驗可能是刪除創建帖子的選項。

追蹤隱私設定的更改

用戶授予收集資料的權限後,他們可能會改變主意。將按鈕或連結新增至您的個人資料或設定螢幕,他們可以在其中更新其隱私設定。

這 「隱私設定」連結會彈出設定對話框,讓使用者更新其設置

您也可以決定當使用者決定停用資料收集時您的應用程式應如何處理。例如,您可以為使用者提供刪除收集的資料或自動刪除的選項。考慮使用 Cloud Functions for Firebase 刪除數據,因為根據需要刪除的資料量,此操作可能需要幾分鐘的時間。有關詳細信息,請參閱刪除和匯出用戶資料指南。

單獨儲存用戶隱私設定的審核日誌

一些應用程式開發人員可能希望保留隱私設定變更的記錄。這可以使用即時資料庫或 Firestore 來完成,方法是建立資料庫的新部分作為隱私變更的審核日誌,根據使用者的唯一識別碼進行結構化,並包括新的隱私設定和時間戳記。當使用者更新其隱私設定時,進行兩次寫入,一個寫入使用者的隱私設置,一個寫入審核日誌。將其作為單獨的部分非常重要,以便您可以創建更具限制性的安全規則。對於 Firestore 用戶,使用細化規則強制審核日誌中的文件不可編輯:

match /audit_log/{uid} {
   allow create: if uid = request.auth.uid;
   allow update: if false;
   allow delete: if false;
 }

透過了解資料、收集偏好、儲存偏好和追蹤更改這四個步驟,可以輕鬆確保您的應用程式尊重用戶的隱私。 ,Firebase 可以輕鬆收集和追蹤使用者在收集和處理資料方面的偏好:

  1. 設定隱私設定
  2. 更新您的應用程式以使用隱私設置
  3. 追蹤隱私設定的更改

設定隱私設定

要收集和儲存隱私設置,您需要兩件事:提示使用者輸入隱私設置的 UI 以及儲存這些設定的方法。

建立隱私設定 UI

隱私設定 UI 的格式由您決定。建置 UI 時需要考慮以下幾點:

了解您收集的數據

花一些時間對您的應用程式儲存或處理的使用者資料進行分類。請務必包含您的應用程式直接收集的資料以及您的應用程式所使用的服務所收集的資料。對於 Firebase 服務,檢查Firebase 處理的最終用戶資料範例可能會有所幫助。

設計你的 UI 來幫助用戶

嘗試用簡潔、用戶友好的術語描述您收集的資料類型,包括收集的資料如何幫助您的應用程式或將如何使用。

如果您的應用程式需要某些資料才能正常運行,您可以透過停用 UI 上的提交按鈕來避免錯誤,直到使用者選擇您的應用程式運行所需的選項。考慮一下您的應用程式對於啟用某些類型的資料收集而不是其他類型的資料收集的使用者來說應該是什麼樣的流程。

在使用者同意隱私權政策之前,提交按鈕將被停用在使用者同意隱私權政策之前,提交按鈕將被停用

儲存隱私設定

您在何處以及如何儲存用戶的隱私設定也取決於您。您可以使用任何可靠的標識符,將使用者與他們在隱私設定 UI 中所做的選擇相關聯。

一種常見的方法是使用標識符作為在應用程式中使用的資料儲存中儲存首選項的密鑰。例如,您可以使用 Firebase Auth UID 作為即時資料庫實例中的鍵,或使用 Firebase 實例 ID 來組織 Firestore 文件集合。

範例:使用身份驗證 UID 和即時資料庫儲存使用者首選項

考慮一個使用 Firebase Auth UID 和 Firebase 即時資料庫來儲存使用者首選項的社群媒體應用程式。

為了確保用戶資料的安全和私密,該應用程式將他們的首選項保存到資料庫的單獨部分,並具有限制性安全規則,僅允許該用戶讀取或寫入。該應用程式還驗證預期值只是布林值,並且不接受意外值:

"privacy": {
  "$uid": {
    ".write": "auth.uid === $uid",
    ".read": "auth.uid === $uid",
    "data_processing": {
      ".validate": "newData.isBoolean()"
    },
    "content": {
      ".validate": "newData.isBoolean()"
    },
    "social": {
      ".validate": "newData.isBoolean()"
    },
    "$other": {
      ".validate": "false"
    }
  }
}

更新您的應用程式以使用隱私設置

在應用程式中提供使用者隱私設定後,您可以為啟用了特定設定的使用者啟用特定功能。讓您的應用程式在載入收集資料或使用收集的資料的功能之前檢查設定。對於某個功能,請考慮如果沒有該功能,最佳體驗是什麼。例如,如果應用程式是微博平台,並且用戶已禁止該應用程式儲存其帖子,則最好的用戶體驗可能是刪除創建帖子的選項。

追蹤隱私設定的更改

用戶授予收集資料的權限後,他們可能會改變主意。將按鈕或連結新增至您的個人資料或設定螢幕,他們可以在其中更新其隱私設定。

這 「隱私設定」連結會彈出設定對話框,讓使用者更新其設置

您也可以決定當使用者決定停用資料收集時您的應用程式應如何處理。例如,您可以為使用者提供刪除收集的資料或自動刪除的選項。考慮使用 Cloud Functions for Firebase 刪除數據,因為根據需要刪除的資料量,此操作可能需要幾分鐘的時間。有關詳細信息,請參閱刪除和匯出用戶資料指南。

單獨儲存用戶隱私設定的審核日誌

一些應用程式開發人員可能希望保留隱私設定變更的記錄。這可以使用即時資料庫或 Firestore 來完成,方法是建立資料庫的新部分作為隱私變更的審核日誌,根據使用者的唯一識別碼進行結構化,並包括新的隱私設定和時間戳記。當使用者更新其隱私設定時,進行兩次寫入,一個寫入使用者的隱私設置,一個寫入審核日誌。將其作為單獨的部分非常重要,以便您可以創建更具限制性的安全規則。對於 Firestore 用戶,使用細化規則強制審核日誌中的文件不可編輯:

match /audit_log/{uid} {
   allow create: if uid = request.auth.uid;
   allow update: if false;
   allow delete: if false;
 }

透過了解資料、收集偏好、儲存偏好和追蹤更改這四個步驟,可以輕鬆確保您的應用程式尊重用戶的隱私。