设置 Facebook 社交登录
集成 Facebook OAuth 2.0 认证 (Authentication) 系统,实现“使用 Facebook 登录”、账户关联以及安全访问 Facebook API。
本指南假设你对 Logto 连接器 (Connectors) 有基本的了解。对于不熟悉的人,请参考 连接器 (Connectors) 指南以开始了解。
开始使用
Facebook 连接器支持 OAuth 2.0 集成,让你的应用可以:
- 添加“使用 Facebook 登录”认证 (Authentication)
- 将用户账户关联到 Facebook 身份
- 从 Facebook 同步用户资料信息
- 通过 Logto Secret Vault 安全存储令牌访问 Facebook API,实现自动化任务(例如:回复帖子;在你的应用中发布内容和视频)
要设置这些认证 (Authentication) 功能,请先在 Logto 中创建一个 Facebook 连接器:
- 前往 Logto > 连接器 > 社交连接器。
- 点击 添加社交连接器,选择 Facebook,点击 下一步,并按照分步教程完成集成。
步骤 1:在 Facebook App Dashboard 上创建应用
在你可以将 Facebook 作为认证 (Authentication) 提供商之前,必须在 Facebook 开发者平台上创建一个应用,以获取 OAuth 2.0 凭据。
- 如果你还没有账号,请注册成为 Facebook 开发者。
- 访问 Apps 页面。
- 点击你已有的应用,或创建一个新应用。
用例是你的应用与 Meta 交互的主要方式,并决定了你的应用可以使用哪些 API、功能、权限和产品。如果你只需要社交认证 (Authentication)(获取 email 和 public_profile),请选择“Authentication and request data from users with Facebook Login”。如果你想访问 Facebook API,请选择你偏好的用例——大多数用例在应用创建后也支持集成“Facebook Login for business”。
- 应用创建后,在应用仪表盘页面,导航到 Use cases > Facebook Login > Settings 或 Facebook Login for business > Settings。
- 在 Valid OAuth Redirect URIs 中填写 Logto 的 Callback URI(从你的 Logto Facebook 连接器中复制)。用户使用 Facebook 登录后,会被重定向到这里,并携带 Logto 用于完成认证 (Authentication) 的授权码。
- 前往 Use cases,点击你的用例下的 Customize,添加权限 (Scopes)。我们建议添加
email
和public_profile
,这是在 Logto 中实现 Facebook 登录所必需的。
步骤 2:使用客户端凭据配置 Logto 连接器
- 在 Facebook App Dashboard,点击侧边栏 App settings > Basic。
- 你将在面板上看到 App ID 和 App secret。
- 点击 App secret 输入框旁的 Show 按钮以显示并复制其内容。
- 配置你的 Logto Facebook 连接器设置:
- 在
clientId
字段填写 App ID。 - 在
clientSecret
字段填写 App secret。 - 在 Logto 中点击 Save and Done,将你的身份系统与 Facebook 连接。
- 在
步骤 3:配置权限 (Scopes)
权限 (Scopes) 定义了你的应用向用户请求的权限,并控制你的项目可以从他们的 Facebook 账户访问哪些私有数据。
在 Facebook App Dashboard 配置权限 (Scopes)
- 前往 Facebook App Dashboard > Use cases,点击 Customize 按钮。
- 只添加你的应用所需的权限 (Scopes)。用户将在 Facebook 用户授权页面 (Consent screen) 上审核并授权这些权限:
- 用于认证 (Authentication)(必需):
email
和public_profile
。 - 用于 API 访问(可选):你的应用需要的其他权限 (Scopes)(如访问 Threads API 的
threads_content_publish
、threads_read_replies
)。可浏览 Meta Developer Documentation 获取可用服务。
- 用于认证 (Authentication)(必需):
在 Logto 中配置权限 (Scopes)
根据你的需求选择以下一种或多种方式:
方式 1:无需额外 API 权限 (Scopes)
- 在 Logto Facebook 连接器的
Scopes
字段留空。 - 默认会请求
email public_profile
权限 (Scopes),以确保 Logto 能正确获取基础用户信息。
方式 2:登录时请求额外权限 (Scopes)
- 在 Scopes 字段中输入所有需要的权限 (Scopes),用空格分隔。
- 你在这里填写的权限 (Scopes) 会覆盖默认值,因此请务必包含认证 (Authentication) 权限:
email public_profile
。
方式 3:后续按需增量请求权限 (Scopes)
- 用户登录后,你可以通过重新发起联合社交授权 (Authorization) 流程并更新用户存储的令牌集,按需请求更多权限 (Scopes)。
- 这些额外权限 (Scopes) 无需在 Logto Facebook 连接器的
Scopes
字段中填写,可以通过 Logto 的 Social Verification API 实现。
按照这些步骤操作后,你的 Logto Facebook 连接器只会请求你的应用所需的权限 (Permissions)——不多也不少。
如果你的应用请求这些权限 (Scopes) 以访问 Facebook API 并执行操作,请确保在 Logto Facebook 连接器中启用 Store tokens for persistent API access。详见下一节。
步骤 4:常规设置
以下是一些不会阻止 Facebook 连接但可能影响终端用户认证 (Authentication) 体验的常规设置。
同步用户资料信息
在 Facebook 连接器中,你可以设置同步用户资料信息(如用户名和头像)的策略。可选项包括:
- 仅在注册时同步:用户首次登录时获取一次资料信息。
- 每次登录时都同步:每次用户登录时都会更新资料信息。
存储令牌以访问 Facebook API(可选)
如果你希望访问 Facebook API 并在用户授权下执行操作(无论是通过社交登录还是账户绑定),Logto 需要获取特定 API 权限 (Scopes) 并存储令牌。
- 按照上方教程添加所需权限 (Scopes)。
- 在 Logto Facebook 连接器中启用 Store tokens for persistent API access。Logto 会将 Facebook 访问令牌安全地存储在 Secret Vault 中。
Facebook 不提供刷新令牌 (Refresh tokens)。但当启用令牌存储时,Logto 会在用户认证 (Authentication) 时自动请求一个长期有效的访问令牌(60 天)。在此期间,用户可以手动撤销访问令牌,否则无需重新授权即可访问 Facebook API。注意:不要在 Scope
字段中添加 offline_access
,否则可能导致错误。
步骤 5:使用 Facebook 测试用户测试登录(可选)
你可以使用测试、开发者和管理员用户账号测试应用登录。你也可以直接发布应用,让任何 Facebook 用户都能登录。
- 在 Facebook App Dashboard,点击侧边栏 App roles > Test Users。
- 点击 Create test users 按钮创建测试用户。
- 点击已有测试用户的 Options 按钮查看更多操作,如“更改姓名和密码”。
步骤 6:发布 Facebook 登录设置
通常,只有测试、管理员和开发者用户可以登录应用。要让普通 Facebook 用户在生产环境中登录应用,你可能需要发布该应用。
- 在 Facebook App Dashboard,点击侧边栏 Publish。
- 如有需要,填写 Privacy Policy URL 和 User data deletion 字段。
- 点击右下角的 Save changes 按钮。
- 点击应用顶部栏的 Live 开关按钮。
使用 Facebook 连接器
创建并连接 Facebook 连接器后,你可以将其集成到终端用户流程中。根据你的需求选择相应的选项:
启用“使用 Facebook 登录”
- 在 Logto 控制台,前往 登录体验 > 注册与登录
- 在 社交登录 部分添加 Facebook 连接器,让用户可以通过 Facebook 认证 (Authentication)
了解更多关于社交登录体验。
关联或解绑 Facebook 账户
使用 Account API 在你的应用中构建自定义账户中心,让已登录用户可以关联或解绑他们的 Facebook 账户。参见 Account API 教程
你可以仅为账户关联和 API 访问启用 Facebook 连接器,而无需为社交登录启用。
访问 Facebook API 并执行操作
你的应用可以从 Secret Vault 获取存储的 Facebook 访问令牌 (Access token),调用 Facebook API 并自动化后端任务(例如发布内容或管理帖子)。请参考相关指南,了解如何获取存储的令牌以访问 API。
管理用户的 Facebook 身份
用户关联 Facebook 账户后,管理员可以在 Logto 控制台管理该连接:
- 前往 用户管理 并打开该用户的资料页。
- 在 社交连接 下找到 Facebook 项,点击 管理。
- 在此页面,管理员可以管理用户的 Facebook 连接,查看所有从 Facebook 账户授权并同步的资料信息,以及检查访问令牌 (Access token) 状态。
Facebook 的访问令牌 (Access token) 响应不包含具体的权限 (Scope) 信息,因此 Logto 无法直接显示用户授权的权限列表。但只要用户在授权 (Authorization) 时同意了所请求的权限 (Scopes),你的应用在访问 Facebook API 时就会拥有相应的权限。建议在 Facebook 开发者控制台和 Logto 中准确配置所需的权限 (Scopes),以确保你的应用拥有必要的访问权限。