

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

# 将 Google 添加为社交身份提供商
<a name="cognito-user-pools-social-idp-google"></a>

**注意**  
**上次通过提供商控制台进行验证的时间为** 2026 年 10 月 2 日。Google 控制台步骤遵循谷歌身份验证平台（**品牌推广**、**受众**、**数据访问**和**客户**部分）。如果 Google 控制台与这些步骤不同，请查阅 [Google 身份验证平台文档](https://support.google.com/cloud/answer/15544987)。

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

## 在谷歌身份验证平台上注册 OAuth 客户端
<a name="social-idp-google-register"></a>

**注册谷歌 OAuth 客户端**

1. 登录 [Google Cloud 控制台](https://console.cloud.google.com/)并创建或选择一个项目。

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

1. 选择 “**品牌推广**”。在 “**授权域名**” 下，添加用户池中的可注册域名，而不是完整的 URL：
   + `amazoncognito.com`，用于默认 Amazon Cognito 域名。
   + 例如`example.com`，您的自定义域名的根目录（如果您使用自定义域名）。

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

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

1. 在 “**授权 JavaScript 来源**” 下，输入您的用户池域，不带路径：
   + 默认 Amazon Cognito 域名：`https://<your-prefix>.auth.<region>.amazoncognito.com`
   + 自定义域：`https://auth.example.com`

1. 在**授权的重定向 URI** 下，输入您的用户池域的`/oauth2/idpresponse`终端节点：
   + 默认 Amazon Cognito 域名：`https://<your-prefix>.auth.<region>.amazoncognito.com/oauth2/idpresponse`
   + 自定义域：`https://auth.example.com/oauth2/idpresponse`

1. 选择**创建**。安全存储 Google 显示的**客户**端 ID** 和客户机密钥**。当你将 Google 添加到用户池时，你需要输入这些值。
**注意**  
对于 2025 年 6 月之后创建的客户端，Google 只会显示一次客户机密信息。立即存放。

## 将 Google 添加到您的用户池
<a name="social-idp-google-configure"></a>

**要将谷歌添加为 IdP，请在 Amazon Web Services 管理控制台**

1. 在 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中，选择您的用户池，然后选择**社交和外部提供商**，然后选择**添加身份**提供商。

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

1. 对于**授权范围**，请输入`profile email openid`，并用空格分隔。

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

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

## 测试谷歌登录
<a name="social-idp-google-test"></a>

打开您的托管登录页面并选择**继续使用 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 陷阱
<a name="social-idp-google-pitfalls"></a>

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

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

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