

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

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

**注意**  
**上次通过提供商控制台进行验证的时间为** 2026 年 10 月 2 日。Facebook 步骤使用 [Meta 开发者](https://developers.facebook.com/)版控制台，该控制台围绕**用例**组织应用程序设置。**OAuth 重定向设置位于 “**用例**”、“**自定义**”、“设置” 下。**

要让你的用户使用 Facebook 登录，你可以使用 Facebook 登录用例创建一个 Meta 应用程序，然后将 Facebook 作为身份提供者 (IdP) 添加到你的用户池中。必须先启用托管登录。

## 创建一个 Meta 应用程序用于 Facebook 登录
<a name="social-idp-facebook-register"></a>

**创建和配置 Meta 应用程序**

1. 登录[开发者版 Meta](https://developers.facebook.com/)，选择**我的应用程序**，然后选择**创建应用程序**。

1. 对于用例，请选择**身份验证并向使用 Facebook 登录的用户请求数据**。完成应用程序的创建。新应用程序在**开发**模式下启动。

1. 从 **“应用程序设置”**，然后**选择 “基本**”，记录**应用程序 ID** 和**应用程序密钥**。将 **App** Domains 设置为用户池域名主机（`<your-prefix>.auth.<region>.amazoncognito.com`或`auth.example.com`），然后添加以您的托管登录登录网址作为**网站**网址的**网站**平台。

1. 前往 “**用例**”，选择你的 Facebook 登录用例，然后选择 “**自定义**”。确认`public_profile`权限（必填）并添加`email`。

1. 在 **“设置”** 用例中，将**有效的 OAuth 重定向 URI 设置为**用户池`/oauth2/idpresponse`域的终端节点：
   + 默认 Amazon Cognito 域名：`https://<your-prefix>.auth.<region>.amazoncognito.com/oauth2/idpresponse`
   + 自定义域：`https://auth.example.com/oauth2/idpresponse`

## 将 Facebook 添加到你的用户池中
<a name="social-idp-facebook-configure"></a>

**要将 Facebook 添加为 IdP Amazon Web Services 管理控制台**

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

1. 输入**应用程序 ID 和应用程序****密码**，然后选择 Facebook API 版本。请选择最新的可用版本，因为每个版本都有停产日期，而且不同版本的范围可能有所不同。

1. 对于**授权范围**，请输入`public_profile,email`，用逗号分隔。

1. 映射`email`到`email`和映射`name`到`name`。

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

## 测试 Facebook 登录情况
<a name="social-idp-facebook-test"></a>

当应用程序处于**开发**模式时，添加您自己的 Facebook 帐户作为应用程序角色（管理员、开发者或测试人员）。然后打开您的托管登录页面并选择 “**继续使用 Facebook**”。

**检查点**  
Facebook 会使用授权码返回您的应用程序，您的用户池中会出现一个`name`填充`email`并填充的新联合用户。`/oauth2/idpresponse`然后将应用程序切换到**直播**模式并确认非角色账户可以登录。显示 “应用程序未激活” 或 “处于开发模式” 的非角色帐户意味着该应用程序仍处于开发模式或缺少高级访问权限。

## Facebook-specific 陷阱
<a name="social-idp-facebook-pitfalls"></a>

开发模式和应用程序审查  
新应用程序处于**开发**模式，只有应用程序角色用户（管理员、开发人员、测试人员）才能登录。要让公众登录，请将应用程序切换到**实时**模式，完成企业验证，然后获得高级访问权限`email`（并增加访问权限`public_profile`）。 First-time 测试人员经常点击 “应用程序未激活”，因为他们使用非角色帐户进行测试。

没有经过电子邮件验证的索赔  
Facebook 不会回复`email_verified`索赔，因此没有什么可映射的，亚马逊 Cognito 将 Facebook 电子邮件视为未经验证。不要假设来自Facebook的经过验证的电子邮件，并且只能通过深思熟虑的、可信的逻辑而不是自动地通过电子邮件关联账户。

尽量缩小瞄准镜  
Sign-in 完成率急剧下降到大约四个权限以上。将请求保留到`public_profile`和`email`。亚马逊 Cognito 联合也与 iOS 上的 Facebook Limited 登录不兼容。