View a markdown version of this page

将 Google 添加为社交身份提供商 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Google 添加为社交身份提供商

注意

上次通过提供商控制台进行验证的时间为 2026 年 10 月 2 日。Google 控制台步骤遵循谷歌身份验证平台(品牌推广、受众、数据访问和客户部分)。如果 Google 控制台与这些步骤不同,请查阅 Google 身份验证平台文档。

要让您的用户使用 Google 登录,您需要在 Google 身份验证平台中注册一个 OAuth 客户端,然后将 Google 作为身份提供商 (IdP) 添加到您的用户池中。必须先启用托管登录。

在谷歌身份验证平台上注册 OAuth 客户端

注册谷歌 OAuth 客户端
  1. 登录 Google Cloud 控制台并创建或选择一个项目。

  2. 打开菜单,然后打开 Google 身份验证平台。如果您是第一次,请在 “概览” 页面上选择 “入门”,并提供您的应用程序名称、用户支持电子邮件、受众类型(外部)和联系信息。

  3. 选择 “品牌推广”。在 “授权域名” 下,添加用户池中的可注册域名,而不是完整的 URL:

    • amazoncognito.com,用于默认 Amazon Cognito 域名。

    • 例如example.com,您的自定义域名的根目录(如果您使用自定义域名)。

  4. 选择数据访问权限,然后选择添加或移除范围。添加 openid、.../auth/userinfo.email 和 .../auth/userinfo.profile。

  5. 选择客户端,然后选择创建客户端。对于应用程序类型,选择 Web 应用程序。

  6. 在 “授权 JavaScript 来源” 下,输入您的用户池域,不带路径:

    • 默认 Amazon Cognito 域名:https://<your-prefix>.auth.<region>.amazoncognito.com

    • 自定义域:https://auth.example.com

  7. 在授权的重定向 URI 下,输入您的用户池域的/oauth2/idpresponse终端节点:

    • 默认 Amazon Cognito 域名:https://<your-prefix>.auth.<region>.amazoncognito.com/oauth2/idpresponse

    • 自定义域:https://auth.example.com/oauth2/idpresponse

  8. 选择创建。安全存储 Google 显示的客户端 ID 和客户机密钥。当你将 Google 添加到用户池时,你需要输入这些值。

    注意

    对于 2025 年 6 月之后创建的客户端,Google 只会显示一次客户机密信息。立即存放。

将 Google 添加到您的用户池

要将谷歌添加为 IdP,请在 Amazon Web Services 管理控制台
  1. 在 Amazon Cognito 控制台中,选择您的用户池,然后选择社交和外部提供商,然后选择添加身份提供商。

  2. 选择 Google。输入来自 Google 身份验证平台的客户端 ID 和客户端密钥。

  3. 对于授权范围,请输入profile email openid,并用空格分隔。

  4. 将您想要的 Google 属性映射到您的用户池属性。至少,映射email到email和映射email_verified到email_verified。如果您不进行映射email_verified,Amazon Cognito 会将该电子邮件视为未验证。

  5. 选择添加身份提供商,然后在您的应用程序客户端上启用 Google。

测试谷歌登录

打开您的托管登录页面并选择继续使用 Google,或者直接打开授权端点:

https://<your-prefix>.auth.<region>.amazoncognito.com/oauth2/authorize?response_type=code&client_id=<app-client-id>&redirect_uri=<your-app-callback>&identity_provider=Google
检查点

浏览器会完成 Google 帐号选择器,并使用授权码返回/oauth2/idpresponse到您的应用程序。在用户管理中,会出现一个新的联合身份用户,其中包含已填充的 Google 提供商email,并email_verified设置为true。你应该不会看到任何redirect_uri_mismatch错误。

Google-specific 陷阱

未经验证的同意屏幕用户上限

处于测试发布状态的应用程序仅限于您列出的测试用户。显示未验证应用程序屏幕的应用程序在项目生命周期内最多只能有 100 个新用户,并且上限无法重置。但是,如果您的应用仅请求基本登录范围(openid、email、profile),则无需列出测试用户,也不会看到任何警告,他们的授权也不会过期。请遵守这些范围以避免上限,或者在验证中心验证您的应用程序。

Redirect-URI 传播

对授权来源和重定向 URI 的更改可能需要五分钟到几小时才能生效。不匹配返回redirect_uri_mismatch;未注册的来源返回。origin_mismatch

email_verified 和账户关联

谷歌email_verified=true对Gmail和谷歌工作空间账户持有主张。Amazon Cognito 不会自动将谷歌用户与拥有相同电子邮件地址的现有用户合并。要关联它们,请实现链接(例如,使用注册前 Lambda 触发器AdminLinkProviderForUser和),并且仅在可信值上进行链接。email_verified