简介:使用 Data Portability API 开发应用

借助 Data Portability API,您可以构建应用,以请求用户授权将数据的副本从 Google 服务移至您的应用。这有助于实现数据可移植性,并便于切换服务。

如需了解用户如何分享数据,请参阅与第三方分享您的数据

前提条件

应用必须先获得 Google 的批准,然后才能发布。

您还应验证 Data Portability API 是否可供您所在地区的用户使用。如需查看受支持的国家/地区列表,请参阅“与第三方分享您的数据”页面上的常见问题

开发者工作流程

以下是创建使用 Data Portability API 的应用的步骤。

开发者使用 Data Portability API 创建应用的步骤

  1. 为用户实现 OAuth 意见征求流程。在此示例中,用户提供对 YouTube 视频数据的访问权限。

    1. 用户点击导入 YouTube 视频,然后登录其 Google 账号。

    2. 应用会将用户转到 OAuth 意见征求网址。请注意,此示例网址已简化,缺少一些参数:

      https://accounts.google.com/o/oauth2/v2/auth?scope=https://www.googleapis.com/auth/dataportability.myactivity.youtube

    3. 用户点击 OAuth 权限请求页面上的下一步,同意分享其数据,并提供账号访问权限。

    4. 用户选择要分享的数据以及应用可以访问这些数据的时长(对其数据的一次性访问或 30 天或 180 天的基于时间的访问),然后点击继续

      注意:在 OAuth 令牌到期前最多 90 天,用户可以选择在 OAuth 令牌到期前续订对其数据的访问权限。如果用户没有在 90 天内到期的镜重,系统不会显示“续订”按钮。

    5. 系统会将用户重定向到应用。

    6. 开发者为用户获取 OAuth 令牌。

  2. 您的应用使用包含此 OAuth 范围的附加 OAuth 令牌调用 InitiatePortabilityArchive(resources = ["myactivity.youtube"])

    https://www.googleapis.com/auth/dataportability.myactivity.youtube

    此调用会启动创建数据归档的流程,并响应作业 ID 以及用户是授予了一次性访问权限还是基于时间的访问权限。

    注意:一次性访问权限是指每个范围一次导出。如果用户授予多个镜,您可以选择为令牌授权的每个资源分别创建作业。

  3. 您的应用使用包含以下 OAuth 范围的附加 OAuth 令牌调用 GetPortabilityArchiveState(job_id)

    https://www.googleapis.com/auth/dataportability.myactivity.youtube

    您可以多次调用此方法来检索归档作业的状态。该方法会返回作业的状态。如果状态为 COMPLETE,则表示归档已准备就绪,并且提供了签名的 Cloud Storage 网址。请注意,完成归档请求所需的时间可能从几分钟到几小时不等,具体取决于数据的大小。

  4. 使用签名网址下载数据归档文件。

  5. 如果用户授予一次性访问权限,您可以使用附加的 OAuth 令牌调用 ResetAuthorization(),以重置已耗尽的资源并移除所有 OAuth 意见征求。

  6. 如果用户授予基于时间的访问权限,您可以在用户同意的有效期内每 24 小时导出一次资源。

如需详细了解如何使用 Data Portability API 方法,请参阅调用 Data Portability API 方法

用户如何与 Data Portability API 应用互动

此图显示了用户如何与集成了 Data Portability API 的应用互动。

用户导出数据的步骤

  1. 首先,系统会向用户显示用于检索其数据的选项。

  2. 接下来,用户登录其 Google 账号。

  3. 然后,当系统提示用户分享数据时,用户点击下一步;当系统提示用户接受隐私权政策时,用户点击我了解

  4. 然后,系统会向用户显示 OAuth 权限请求页面,用于允许应用访问其数据。此处的选项与您配置的 OAuth 范围一致。用户选择要分享的数据以及应用可以访问这些数据的时长(对数据的一次性访问或 30 天或 180 天的基于时间的访问),然后点击继续

  5. 允许访问后,系统会开始导入数据。请求可能需要几分钟到几小时才能完成,具体取决于数据的大小。