Show Menu
主题×

使用Facebook和Twitter进行社交登录

社交登录是一种功能,用于向站点访客显示使用其Facebook或Twitter帐户登录的选项。 因此,在AEM成员用户档案中包括允许的Facebook或Twitter数据。

社交登录概述

要包含社交登录,需要 创建 自定义Facebook和Twitter应用程序。
虽然we-retail示例提供Facebook和Twitter应用程序及云服务示例,但生产网站上不提供 这些示例
所需的步骤包括:
  1. 对所有AEM发布实例 启用OAuth身份验证。
    未启用OAuth,尝试登录失败。
  2. 创建 社交应用程序和云服务。
  3. 为社区 “社交登录”。
有两个基本概念:
  1. 范围 (权限)指定允许应用程序请求的数据。
  2. 字段 (参数)指定使用URL参数请求的实际数据。

Facebook登录

Facebook API版本

社交登录和we-retail Facebook示例是在Facebook Graph API版本1.0时开发的。自AEM 6.4 GA和AEM 6.3 SP1社交登录更新以与较新的Facebook Graph API 2.5版本一起使用。
对于较旧的AEM版本,如果您在日志中遇到 异常。无法从中提取令牌 ,请升级到该AEM版本的最新CFP。
有关Facebook Graph API版本信息,请参 阅Facebook API更改日志

创建Facebook应用程序

需要正确配置的Facebook应用程序才能启用Facebook社交登录。
要创建Facebook应用程序,请按照Facebook的说明,网址为 https://developers.facebook.com/apps/ 。 对其说明所做的更改不会反映在以下信息中。
通常,从Facebook API v2.7开始:
  • 添加新Facebook应用程序
    • 对于 平台 ,选择网站:
      • 对于 站点URL ,输入 https://<server>:<port>.
      • 在“ 显示名称 ”中,输入一个标题以用作Facebook连接服务的标题。
      • 对于 类别 ,建议选择“ 页面应用程序 ”,但可以是任何内容。
      • 添加产品: Facebook登录
      • 对于 有效的OAuth重定向URI ,请输入 https://<server>:<port>.
对于开发,http://localhost:4503将起作用。
创建应用程序后,找到“应用 程序ID ”和“ 应用程序机密 ”设置。 配置Facebook云服务时需 要此信息

创建Facebook ConnectCloud Service

通过 AdobeGranite OAuth应用程序和提供程序 创建云服务配置实例化的AdobeGranite OAuth应用程序和提供程序实例,标识新用户所添加的Facebook应用程序和成员组。
  1. 在AEM作者实例上,以管理员权限登录。
  2. 从全局导航中,选 择工具 > Cloud Services > Facebook社交登录配置
  3. 选择配置上 下文路径
    上下文路径 应与您在创建/编辑社区站点时选择的云配置路径相同。
  4. 检查您的上下文路径是否已启用以在其下创建云服务。
  5. 转至“工 ”>“ 常规 >“配 ​置浏览器”。 选择上下文并编辑属性。 启用云配置(如果尚未启用)。
  6. 创建/编辑 Facebook云服务配置。
    • 标题 ( 必需 )输入标识Facebook应用程序的显示标题。 建议使用与Facebook应用程序的“显 示名称 ”输入的名称。
    • 应用程序ID/API密钥 ( ​必需 )输入 Facebook应用程序的应用程序ID。 它标识从对 话框创建的AdobeGranite OAuth应用程序和 Provider实例。
    • 应用程序密 码( 必需 )输入Facebook应 用程序的 应用程序密码。
    • 创建用户 如果选中此项,则使用Facebook帐户登录将创建AEM用户条目,并将其作为成员添加到所选用户组。 默认为选中(强烈推荐)。
    • 掩码用户ID :取消选择。
    • 范围电子邮件 :应从Facebook获取用户的电子邮件id。
    • 添加到用户组 ,选择“添加用户组”,为要向其 添加用户的社 区站点,选择一个或多个成员组。
    可随时添加或删除组。 但现有用户的会员资格不会受到影响。 自动会员资格仅适用于更新此字段后创建的新用户。 对于禁用匿名用户的站点,选择将用户添加到该封闭的社区站点对应的社区成员组。
    • Select SAVE .
    • 发布 .
结果是一个 AdobeGranite OAuth应用程序和提供程序实例 ,除非添加其他范围(权限),否则不需要进一步修改。 默认范围是Facebook登录的标准权限。 如果需要其他范围,则需要直接编辑OSGI配置。 如果有修改直接通过系统/控制台完成,请避免从触屏UI编辑云服务配置以避免覆盖。

AEM CommunitiesFacebook OAuth提供商

AEM Communities提供程序扩展 了AdobeGranite OAuth应用程序和提供程序 实例。
此提供者需要编辑才能:
  • 允许用户更新
  • 在范围内添加 其他字段
    • 默认情况下,并非所有默认允许的字段都包含在内。
如果需要编辑,请在每个AEM发布实例上:
  1. 以管理员权限登录。
  2. 导航到 Web控制台 。 例如,http://localhost:4503/system/console/configMgr。
  3. 找到AEM CommunitiesFacebook OAuth提供商。
  4. 选择要打开进行编辑的铅笔图标。
    • OAuth提供者ID
      ( 必需 )默认值 为soco -facebook 。 不要编辑。
    • Cloud Service配置
      默认值为 /etc/ cloudservices / facebookconnect . 不要编辑。
    • OAuth提供程序服务配置
      默认值为 /apps/social/facebookprovider/config/ . 不要编辑。
    • 启用标记
      请勿编辑。
    • 用户路径
      存储用户数据的存储库中的位置。 对于社区站点,要确保成员能够视图彼此的用户档案,路径应为默 认/home/users/community
    • 启用字段
      如果选中,则在向Facebook发出请求时指定列出的字段,以供用户验证和获取信息。 将取消选择默认值。
    • 字段
      启用“字段”后,调用Facebook图形API时将包括以下字段。 必须允许在云服务配置中定义的范围内使用这些字段。 其他字段可能需要Facebook批准。 引用Facebook文档的“Facebook登录权限”部分。 作为参数添加的默认字段为:
      • id
      • 名称
      • first_name
      • last_name
      • 链接
      • 区域设置
      • 图片
      • 时区
      • updated_time
      • 已验证
      • 电子邮件
    如果添加或更改了任何字段,请更新相应的默认同步处理程序配置以更正映射。
    • 更新用户
      如果选中此项,则每次登录时都会刷新存储库中的用户数据,以反映用户档案更改或请求的其他数据。 “默认”(Default)为取消选择。

后续步骤

Facebook和Twitter的后续步骤相同:

Twitter登录

创建Twitter应用程序

需要配置的Twitter应用程序才能启用Twitter社交登录。
请按照最新说明,在https://apps.twitter.com上新建一个Twitter应 用程序
一般而言:
  1. 输入一 个名称 ,该名称将向网站的用户标识您的Twitter应用程序。
  2. 输入​ 说明 .
  3. 对于 网站 -输入 https://<server>
  4. 对于 回呼URL —— 输入 https://server
    无需指定端口。
    对于开发,https://127.0.0.1/将起作用。
  5. 创建应用程序后,找到 消费者(API)密钥 和消费者(API)机密 。 配置Twitter云服务时需 要此信息

权限

在Twitter应用程序管理员的权限部分:
  • 访问 :选择 Read only
    • 不支持其他选项
  • 其他权限 :(可选)选 Request email addresses from users 择。
    • 如果未选择,AEM中的用户用户档案将不包括其电子邮件地址。
    • Twitter的说明说明需要采取其他步骤。
对社交登录发出的唯一REST请求是 GET帐户/验证凭据

创建Twitter ConnectCloud Service

通过 AdobeGranite OAuth应用程序和提供程序 创建云服务配置实例化的AdobeGranite OAuth应用程序和提供程序实例,标识新用户所添加的Twitter应用程序和成员组。
  1. 在创作实例上,使用管理员权限登录。
  2. 从全局导航中,选 择工具 > Cloud Services > Twitter社交登录配置
  3. 选择上 下文路径 配置。
    上下文路径应与您在创建/编辑社区站点时选择的云配置路径相同。
  4. 检查您的上下文路径是否已启用以在其下创建云服务。
  5. 转至“工 ”>“ 常规 >“配 ​置浏览器”。 选择上下文并编辑属性。 启用云配置(如果尚未启用)。
  6. 创建/编辑Twitter云服务配置。
    • 标题
      (必​ )输入标识Twitter应用程序的显示标题。 建议使用与Twitter应用程序的“显 示名称 ”输入的名称。
    • 使用者密钥
      ( 必需 )输入 Twitter应用程序的消费者 (API)密钥。 它标识从对 话框创建的AdobeGranite OAuth应用程序和 Provider实例。
    • 使用者密钥
      ( 必需 )输入 Twitter应用程序的消费者 (API)机密。
    • 创建用户
      如果选中此项,则使用Twitter帐户登录将创建AEM用户条目,并将其作为成员添加到所选用户组。 默认为选中(强烈推荐)。
    • 隐藏用户 ID
      取消选择。
    • 添加到用户组
      选择“添加用户组”,为要向其 添加用户 的社区站点选择一个或多个成员组。
    可随时添加或删除组。 但现有用户的会员资格不会受到影响。 自动会员资格仅适用于更新此字段后创建的新用户。 对于禁用匿名用户的站点,将用户添加到用于该封闭社区站点的相应社区成员组。
  7. 选择 保存 发布
结果是一个 AdobeGranite OAuth应用程序和提供程序实例 ,无需进一步修改。 默认范围是Twitter登录的标准权限。

AEM CommunitiesTwitter OAuth提供者

AEM Communities配置扩展了 AdobeGranite OAuth应用程序和提供程序 实例。 此提供程序需要编辑才能允许用户更新。
如果需要编辑,请在每个AEM发布实例上:
  1. 以管理员权限登录。
  2. 导航到 Web控制台
    例如,http://localhost:4503/system/console/configMgr。
  3. 找到AEM CommunitiesTwitter OAuth提供者。
  4. 选择要打开进行编辑的铅笔图标。
    • OAuth提供者ID
    ( 必需 )默认值 为soco -twitter 。 不要编辑。
    • Cloud Service配置
      The default value is conf. 不要编辑。
    • OAuth提供程序服务配置
      默认值为 /apps/social/twitterprovider/config/ . 不要编辑。
    • 用户路径
      存储用户数据的存储库中的位置。 对于社区站点,要确保成员能够视图彼此的用户档案,路径应为默认路径 /home/users/community
    • 启用参数 ,不进行编辑
    • URL参数 不编辑
    • 更新用户
      如果选中此项,则每次登录时都会刷新存储库中的用户数据,以反映用户档案更改或请求的其他数据。 将取消选择默认值。

后续步骤

Facebook和Twitter的后续步骤相同:

启用社交登录

AEM Communities站点控制台

配置云服务后,在创建或管理社区站点时,可以使用“用户管理设置”子面板为社 区站点启用相 关的 “社交登录 设置
  1. 选择保存社交登录配置的站点配置上下文。
  2. 在“常规”选项卡上,设置云配置。
  3. 在“设置”选项卡上,启 用“社交登录 ”并保存。

测试社交登录

  • 确保 已在所有发布实例上启用Adobe Granite OAuth身份验证处理程序。
  • 确保已发布云服务。
  • 确保已发布社区站点。
  • 在浏览器中启动已发布的站点。 例如,http://localhost:4503/content/sites/engage/en.html
  • 选择 登录
  • 选择“ 使用Facebook登录 或“使用Twitter登录”
  • 如果尚未登录到Facebook或Twitter,请使用相应的凭据登录。
  • 可能需要根据Facebook或Twitter应用程序显示的对话框授予权限。
  • 请注意,页面顶部的工具栏会更新以反映成功登录。
  • 选择 用户档案 :用户档案页显示用户的头像图像、名字和姓氏。 它还根据允许的字段/参数显示Facebook或Twitter用户档案中的信息。

AEM平台OAuth配置

AdobeGranite OAuth身份验证处理程序

Adobe Granite OAuth Authentication Handler 认情况下不启用,并且必 须在所有AEM发布实例上启用。
要在发布时启用身份验证处理程序,只需打开OSGi配置并保存它:
  • 以管理员权限登录。
  • 导航到 Web控制台 。 例如,http://localhost:4503/system/console/configMgr
  • 找到 Adobe Granite OAuth Authentication Handler
  • 选择以打开要编辑的配置。
  • 选择​ 保存
请注意,不要将身份验证处理程序与AdobeGranite OAuth应用程序和提供者的 Facebook或Twitter实例混淆

AdobeGranite OAuth应用程序和提供程序

创建Facebook或Twitter的云服务时,将创建实例 Adobe Granite OAuth Authentication Handler 的实例。
要查找Facebook或Twitter应用程序的已创建实例,请执行以下操作:
  1. 以管理员权限登录。
  2. 导航到 Web控制台
    例如,http://localhost:4503/system/console/configMgr。
  3. 找到AdobeGranite OAuth应用程序和提供程序。
    • 找到客户端 ID与应用 ID匹 配的实例
      除以下属性外,保留配置的其他属性:
    • 配置ID
      (必​ )OAuth配置ID必须唯一。 创建云服务时自动生成。
    • 客户端 ID
      ( 必需 )创建云服务时提供的应用程序 ID。
    • 客户端密钥
      ( 必需 )创建云服务时提供的应用程序密码。
    • 范围
      (可​ )可从提供商那里询问允许的其他范围。 默认范围涵盖提供社交身份验证和用户档案数据所需的权限。
    • 提供者ID
      ( 必需 )创建云服务时,将设置AEM Communities的提供程序ID。 不要编辑。 对于Facebook Connect,此值为 soco -facebook 。 对于Twitter Connect,此值为 soco -twitter
    • (建​ )将创建的用户添加到的一个或多个成员组。 对于AEM Communities,建议列表社区站点的成员组。
    • 回调 URL
      (可​ )为OAuth提供者配置的URL,用于将客户端重定向回。 使用相对url来使用原始请求的主机。 留空将改用最初请求的URL。 后缀“/callback/j_security_check”自动附加到此url。
    回调的域必须向提供者(Facebook或Twitter)注册。
对于每个OAuth身份验证处理程序配置,在实例中创建了两个其他配置:
  • Apache Jackrabbit Oak默认同步处理程序(org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler)-无需进行任何编辑,但您可以查看用户字段映射Facebook字段如何映射到CQ用户用户档案节点。 另请注意,“Sync Handler Name”与OAuth提供程序配置的配置ID匹配。
  • Apache Jackrabbit Oak外部登录模块(org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalLoginModuleFactory)-无需进行任何编辑,但您可能会注意到“标识提供者名称”和“同步处理程序名称”是相同的,并分别指向相应的OAuth和同步处理程序配置。

OAuth用户遍历性能

对于使用Facebook或Twitter登录名注册的社区站点,当站点访客使用其社交登录名时执行的查询的遍历性能可以通过添加以下Oak索引而得到改善。
如果日志中显示遍历警告,则建议添加此索引。
在作者实例上,以管理权限登录:
  1. 从全局导航:选 择工 具、CRX/DE Lite
  2. 从ntBaseLucene的副本创建名为ntBaseLucene-oauth的索引:
    • 在节点下 /oak:index
    • 选择节点 ntBaseLucene
    • 选择复
    • 选择 /oak:index
    • 选择粘
    • 将ntBaseLucene的副本重命名为 ntBaseLucene-oauth
  3. 修改节点ntBaseLucene-oauth的属性:
    • indexPath : /oak:index/ntBaseLucene-oauth
    • name : oauthid-123&#x200B;**&#x200B;**
    • 重新索引 : true
    • reindexCount : 1
  4. 在节点/oak:index/ntBaseLucene-oauth/indexRules/nt:base/properties下:
    • 删除除cqTags外的所有子节点。
    • 将cqTags重命名为 oauthid-123&#x200B;**&#x200B;**
    • 修改节点的属性 oauthid-123&#x200B;**&#x200B;**
      • name : oauthid-123&#x200B;**&#x200B;**
    • 选择 全部保存
  • 对于名 ,将123 oauthid-123 替换为Facebook ID 或Twitter ID(API)KeyPai:在AdobeGranite Granite Uth Application和Facebook配置中,Client Id为Adobe Client Id客户端ID的值的Facebook ID或TwitterAPI AdobeGranite OAuth应用程序和提供程序 KeyKeyPremin。
有关其他信息和工具,请参 阅Oak查询和索引

Dispatcher Configuration