遵守 OAuth 2.0 政策

当您准备将已实现的解决方案从开发环境部署到应用用户手中时,可能需要采取额外措施来遵守 Google 的 OAuth 2.0 政策。在本指南中,我们将概述如何解决在准备应用以供发布时遇到的最常见开发者问题。这有助于您尽可能覆盖最多的受众群体,同时尽量减少错误。

使用不同的项目进行测试和生产

Google 的 OAuth 政策要求为测试和生产环境分别创建项目。某些政策和要求仅适用于正式版应用。您可能需要创建并配置一个单独的项目,其中包含与面向所有 Google 账号的应用正式版对应的 OAuth 客户端。

与用于测试或调试同一应用的类似 OAuth 客户端相比,用于生产环境的 Google OAuth 客户端有助于提供更稳定、更可预测且更安全的数据收集和存储环境。您可以提交正式版项目以进行验证,因此需要遵守针对特定 API 范围的额外要求,其中可能包括第三方安全评估。

  1. Go to the Google API Console. Click Create project, enter a name, and click Create.
  2. 查看此项目中可能与您的测试层级相关联的 OAuth 客户端。如果适用,请为生产项目中的生产客户端创建类似的 OAuth 客户端。
  3. 启用您的客户端使用的任何 API
  4. 在新项目中查看 OAuth 同意屏幕配置。

生产环境中使用的 Google OAuth 客户端不得包含仅供您或您的开发团队使用的测试环境、重定向 URI 或 JavaScript 源。以下是一些示例:

  • 各个开发者的测试服务器
  • 测试版本或预发布版本的应用

维护项目的相关联系人列表

Google 以及您启用的各个 API 可能需要与您联系,以便了解 Google 服务的变更或您的项目及其客户端所需的新配置。查看项目的 IAM 列表,确保团队中的相关人员有权修改或查看项目配置。这些账号可能还会收到有关对项目进行必要更改的电子邮件。

角色包含一组权限,可让您对项目资源执行特定操作。项目编辑者有权执行会修改状态的操作,例如更改项目的 OAuth 同意屏幕。拥有所有编辑者权限的项目所有者可以添加或移除与项目关联的账号,或删除项目。项目所有者还可以提供设置结算信息的原因背景信息。项目所有者可以为使用付费 API 的项目设置结算信息。

项目所有者和编辑者必须保持最新状态。您可以向项目添加多个相关账号,以确保可以继续访问项目并进行相关维护。当有关于您的项目的通知或我们服务的更新时,我们会向这些账号发送电子邮件。Google Cloud 组织管理员必须确保与其组织中的每个项目关联的可联系联系人。如果我们没有项目的最新联系信息,您可能会错过需要您采取行动的重要邮件。

准确反映您的身份

提供有效的应用名称,并可选择提供要向用户显示的徽标。此品牌信息必须准确反映应用的身份。应用品牌信息是通过 OAuth Consent Screen page配置的。

对于正式版应用,OAuth 权限请求页面中定义的品牌信息必须经过验证,然后才能向用户显示。在您的应用完成品牌验证后,用户更有可能授予对该应用的访问权限。当用户查看其现有授权时,系统会在授权界面上向用户显示应用基本信息(包括应用名称、首页、服务条款和隐私权政策);当 Google Workspace 管理员查看其组织的应用使用情况时,系统也会向他们显示这些信息。

如果应用虚假陈述自己的身份或试图欺骗用户,Google 可以撤消或暂停其对 Google API 服务及其他 Google 产品和服务的访问权限。

仅请求您需要的作用域

在应用开发过程中,您可能使用了 API 提供的示例范围在应用中创建概念验证,以详细了解 API 的特性和功能。这些示例范围通常会请求的信息量比应用的最终实现所需的信息量多,因为它们会全面涵盖特定 API 的所有可能操作。例如,示例范围可能会请求读取、写入和删除权限,而您的应用只需要读取权限。请求相关权限,且仅限于实现应用所需的关键信息。

查看您的应用调用的 API 端点的参考文档,并记下它们访问应用所需相关数据所需的范围。查看该 API 提供的所有授权指南,并更详细地说明其范围,包括最常见的用法。请选择您的应用为相关功能提供支持所需的最低数据访问权限。

如需详细了解此要求,请参阅 OAuth 2.0 政策的仅请求您需要的范围部分,以及 Google API 服务用户数据政策的请求相关权限部分。

提交使用敏感或受限范围的正式版应用以供验证

某些范围被归类为“敏感”或“受限”,未经审核便无法在正式版应用中使用。在OAuth 权限请求页面配置中输入您的正式版应用使用的所有范围。如果您的正式版应用使用敏感或受限范围,您必须先提交您使用这些范围的相关信息以供验证,然后才能在授权请求中添加这些范围。

仅使用您拥有的网域

Google 的 OAuth 权限请求页面验证流程要求验证与项目的首页、隐私权政策、服务条款、已获授权的重定向 URI 或已获授权的 JavaScript 来源关联的所有网域。查看 OAuth 权限请求页面编辑器的已授权网域部分中汇总的应用使用的网域列表,并找出您不拥有且无法验证的所有网域。如需验证项目的已获授权网域的所有权,请使用 Google Search Console。使用与您的 API Console 项目关联的 Google 账号作为 Owner 或 Editor。

如果您的项目使用具有公共共享网域的服务提供商,我们建议您启用允许使用您自己的网域的配置。某些提供商提供将其服务映射到您已拥有的网域的子网域的服务。

为正式版应用托管首页

每个使用 OAuth 2.0 的正式版应用都必须有一个可公开访问的主页。应用的潜在用户可能会访问首页,详细了解该应用提供的功能。现有用户可以查看其现有授权列表,并访问应用的首页,以提醒他们继续使用您的产品。

应用的首页必须包含应用功能的说明,以及指向隐私权政策和可选服务条款的链接。首页必须位于您所有权下的经过验证的网域上。

使用安全的重定向 URI 和 JavaScript 来源

适用于 Web 应用的 OAuth 2.0 客户端必须使用 HTTPS 重定向 URI 和 JavaScript 来源(而非纯 HTTP)来保护其数据。Google 可能会拒绝未从安全上下文发起或未解析为安全上下文的 OAuth 请求。

考虑哪些第三方应用和脚本可能有权访问返回到您网页的令牌和其他用户凭据。使用仅限于验证和存储令牌数据的重定向 URI 位置来限制对敏感数据的访问。

后续步骤

确保您的应用符合本页面上所述的 OAuth 2.0 政策后,请参阅提交以进行品牌验证,详细了解验证流程。