Google 致力于为黑人社区推动种族平等。查看具体举措

清除和导出最终用户数据

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

为了帮助您帮助用户控制他们的数据,Firebase 团队创建了一个库来简化两个常见的用户数据流程:

  • clearData :当用户通过 Firebase 身份验证删除其帐户时,从特定 Firebase 服务(当前为实时数据库、Firestore 和存储)中删除用户的数据。

  • exportData :将用户数据的副本从 Firebase 服务保存到 JSON 字符串,并将其上传到 Cloud Storage,以便他们自己轻松下载。

继续阅读以了解如何将这些功能添加到您的应用中,或者直接跳到Firebase 用户隐私 GitHub 存储库中的代码。

clearDataexportData添加到您的应用程序

库中的clearDataexportData函数实现为云函数,可对实时数据库、云存储和 Cloud Firestore 中的数据进行操作。在您自己的应用程序中添加功能是一个三步过程:

  1. 编辑库的user_privacy.json文件以反映您应用的实时数据库、Cloud Firestore 和 Cloud Storage 架构。
  2. clearDataexportData部署为 Cloud Functions。
  3. 为您的应用程序中的功能实现触发器。
  4. 使用存储规则保护clearData数据。

编辑库的user_privacy.json文件

要开始使用,请克隆或下载Firebase 用户隐私 GitHub 存储库

完成后,在文本编辑器中打开functions/user_privacy.json 。 json 文件具有一系列可自定义的路径, clearDataexportData函数使用这些路径在实时数据库、Cloud Firestore 和 Cloud Storage 中查找您的应用数据。如果您的应用仅使用其中一项或两项服务,请首先删除与未使用服务关联的 JSON 对象。

随着对象的消失,您可以开始将剩余服务的占位符值替换为您的应用程序使用的实际数据结构。

将实时数据库路径添加到用户数据

要为您的应用程序的实时数据库实例自定义user_privacy.json ,请将"database"下的占位符字符串列表替换为用户数据的实际路径:

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

如果您只想将其中一个函数添加到您的应用程序,您可以删除另一个函数的对象,而不是用您的数据填充它。

添加包含用户数据的 Cloud Firestore 对象

要为应用的 Cloud Firestore 实例自定义user_privacy.json ,请将"firestore"下的占位符对象列表替换为包含用户数据的实际 Cloud Firestore 对象:

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

如果您只想将其中一个函数添加到您的应用程序,您可以删除另一个函数的对象,而不是用您的数据填充它。

使用用户数据添加 Cloud Storage 存储分区和文件名

要为您应用的 Cloud Storage 实例自定义user_privacy.json ,请将"storage"下的占位符存储桶和文件名替换为实际值:

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

如果您只想将其中一个函数添加到您的应用程序,您可以删除另一个函数的对象,而不是用您的数据填充它。

clearDataexportData部署为 Cloud Functions

如果您还不熟悉 Cloud Functions,请在Cloud Functions 入门指南中阅读有关如何使用它们的信息。

熟悉 Cloud Functions 后,将clearDataexportData函数添加到您的项目中:

  1. 将您自定义的user_data.json复制到您的functions目录。
  2. 将用户隐私库的index.js中的代码复制到项目的index.js中。
    • 如果您不使用clearData ,请省略clearDataclearDatabaseDataclearFirestoreDataclearStorageData函数。
    • 如果您不使用exportData ,请省略exportDataexportDatabaseDataexportFirestoreDataexportStorageData函数。
  3. 部署您的功能。

clearDataexportData实现触发器

每个函数都需要不同的触发器:

  • clearData :当用户通过身份验证删除其帐户时触发。
  • exportData :由 HTTP 请求触发。

实现clearData触发器

要触发clearData事件,您需要使用 Authentication 中的方法。如果您还没有这样做,请将身份验证添加到您的应用程序: Apple 平台Androidweb

然后,添加一种方法来为您的平台调用 Authentication SDK 的delete方法:

iOS+

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

安卓

FirebaseAuth.getCurrentUser().delete();

网络

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

实现exportData触发器

要实现exportData触发器,请向您的应用添加一个按钮或链接,以通过 HTTP 请求调用该函数。在通过 HTTP 请求调用函数中阅读有关通过 HTTP 调用函数的更多信息。

请求详情:

  • 类型: POST
  • 网址: https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
  • 正文: <var>CURRENT_USER'S_UID</var>

直接在 Firebase Hosting 中调用函数

如果您的应用是托管在 Firebase Hosting 上的网络应用,您可以通过站点的firebase.json文件中的rewrite条目调用您的clearData函数:

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

使用存储规则保护exportData数据

要使您的用户导出的数据保密,请添加限制对导出用户的访问权限的 Cloud Storage 规则。

  1. 访问Firebase 控制台中的存储
  2. 打开规则选项卡。
  3. 粘贴以下规则,然后单击Publish
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...
  }
}