将 Google 账号关联与基于 OAuth 的应用快速关联搭配使用

基于 OAuth 的应用快速关联 (App Flip) 关联功能可让用户快速将其在您的身份验证系统中的账号关联到其 Google 账号。 如果用户在发起账户关联过程时手机上已安装您的应用,系统会顺畅地将他们转到您的应用以获取用户授权。

这种方法可提供更快的账户关联过程,因为用户无需重新输入用户名和密码进行身份验证;相反,App Flip 会利用用户在您的应用中的账号凭据。用户将其 Google 账号与您的应用关联后,便可利用您开发的任何集成。

您可以为 iOS 和 Android 应用设置 App Flip。

此图显示了用户将其 Google 账号与您的身份验证系统相关联的步骤。第一张屏幕截图显示了用户如何选择您的应用(如果其 Google 账号已与您的应用相关联)。第二张屏幕截图显示了用户将其 Google 账号与您的应用相关联的确认信息。第三张屏幕截图显示了 Google 应用中已成功关联的用户账号。
图 1.用户手机上使用 App Flip 进行账号关联。

要求

如需实现 App Flip,您必须满足以下要求:

  • 您必须拥有 Android 或 iOS 应用。
  • 您必须拥有、管理和维护支持 OAuth 2.0 授权代码流程的 OAuth 2.0 服务器。

基于 OAuth 的 App Flip 流程

以下序列图详细说明了用户、Google 应用、您的应用和您的授权服务器之间针对 App Flip 的交互。

用户 Google 应用 您的应用 Google 服务器 您的授权 服务器 1. 发起关联 2. 深层链接到您的应用 3. 显示意见征求屏幕 4. 用户授予意见征求 5. 获取授权代码 6. authorization_code 7. 返回到 Google 应用 8. 将代码传递给 Google 服务器 9. 令牌交换 (POST) 10. access_token, refresh_token 11. 存储用户令牌 12. 访问用户资源
图 2.App Flip 流程中的事件序列。 如果提供了授权代码,则令牌交换将以 服务器到服务器的方式进行,与基于浏览器的 OAuth 关联流程中的方式相同。

角色和职责

下表定义了 App Flip 流程中执行者的角色和职责。

执行者 / 组件 GAL 角色 职责
Google 应用 / 服务器 OAuth 客户端 发起账户关联过程,触发到您的移动应用深层链接,将授权代码交换为令牌,并安全地存储这些令牌以访问您服务的 API。
您的应用 授权代理 对用户进行身份验证(通常使用现有应用凭据), 获取意见征求,并从您的服务器检索授权代码。
您的授权服务器 授权服务器 验证授权代码和刷新令牌,并向 Google 服务器颁发访问 令牌。

Design guidelines

This section describes the design requirements and recommendations for the App Flip account linking consent screen. After Google calls your app, your app displays the consent screen to the user.

Requirements

  1. You must communicate that the user’s account is being linked to Google, not to a specific Google product, such as Google Home or Google Assistant.

Recommendations

We recommend that you do the following:

  1. Display Google's Privacy Policy. Include a link to Google’s Privacy Policy on the consent screen.

  2. Data to be shared. Use clear and concise language to tell the user what data of theirs Google requires and why.

  3. Clear call-to-action. State a clear call-to-action on your consent screen, such as “Agree and link.” This is because users need to understand what data they're required to share with Google to link their accounts.

  4. Ability to deny or cancel. Provide a way for users to go back, deny, or cancel, if they choose not to link.

  5. Ability to unlink. Offer a mechanism for users to unlink, such as a URL to their account settings on your platform. Alternatively, you can include a link to Google Account where users can manage their linked account.

  6. Ability to change user account. Suggest a method for users to switch their account(s). This is especially beneficial if users tend to have multiple accounts.

    • If a user must close the consent screen to switch accounts, send a recoverable error to Google so the user can sign in to the desired account with OAuth linking and the implicit flow.
  7. Include your logo. Display your company logo on the consent screen. Use your style guidelines to place your logo. If you wish to also display Google's logo, see Logos and trademarks.

This figure shows an example consent screen with call-outs to the
            individual requirements and recommendations to be followed when
            you design a user consent screen.
Figure 2. Account linking consent screen design guidelines.

在应用中实现 App Flip

如需实现 App Flip,你需要修改应用中的用户授权代码,以接受来自 Google 的深层链接。

如需在 Android 应用中支持 App Flip,请按照 Android 实现指南中的说明操作。

如需在 iOS 应用中支持 App Flip,请按照 iOS 实现指南中的说明操作。

测试 App Flip

在经过验证的正式版应用和可正常运行的 OAuth 2.0 服务器可用之前,可以使用示例应用和测试应用模拟 App Flip。

在 App Flip 期间,Google 应用会先打开您的应用,然后您的应用会向 OAuth 2.0 服务器请求授权代码响应,最后,响应会返回给 Google 应用。

前提条件

如需模拟 Google 应用并触发启动应用的 intent, 请下载并安装适用于 AndroidiOS的 App Flip 测试工具。

下载并安装适用于 AndroidiOS 的 App Flip 示例,以模拟您的应用并选择 OAuth 2.0 响应类型。

测试顺序

  1. 打开 App Flip 测试工具。
  2. Try Flip! 启动 App Flip 示例应用。
  3. 从示例应用中的单选按钮中选择一个响应。
  4. Send 将模拟的 OAuth 2.0 响应返回给测试工具。
  5. 检查测试工具日志消息,了解 auth_code 或错误详情。

生产环境测试

完成 注册和 OAuth 2.0 服务器 实现后,可以在生产环境中测试 App Flip。

建议使用单个 Google 账号和 特定于任务的电子邮件地址 进行自动化测试。

以 Google 账号持有人的身份登录后,可以使用 “关联的账号”查看账号关联状态。您也可以在此处解除账号关联,以便在重复测试之间进行操作。

(可选)您可以选择实现 RISC,以 编程方式解除关联并通知 Google 这一更改。