使用Facebook和Twitter进行社交登录 social-login-with-facebook-and-twitter

社交登录是指向网站访客展示使用其Facebook或Twitter帐户登录的选项。 因此,将允许的Facebook或Twitter数据包含在其AEM成员配置文件中。

socialloginweretail

社交登录概述 social-login-overview

若要包含社交登录,则​ 需要 ​才能创建自定义Facebook和Twitter应用程序。

虽然We-Retail示例提供了示例Facebook和Twitter应用程序和云服务,但在生产网站上不可用。

所需步骤为:

  1. 在所有AEM发布实例上启用OAuth身份验证。

    如果未启用OAuth,则登录尝试会失败。

  2. 创建​社交应用程序和云服务。

  3. 为社区站点​启用​社交登录。

有两个基本概念:

  1. 作用域 (权限)指定允许应用程序请求的数据。

  2. 字段 (参数)指定使用URL参数请求的实际数据。

Facebook登录 facebook-login

Facebook API版本 facebook-api-version

社交登录和We-Retail Facebook示例是在Facebook图形API的版本1.0时开发的。
自AEM 6.4 GA和AEM 6.3 SP1起,社交登录已更新为可与较新的Facebook Graph API 2.5版本配合使用。

NOTE
对于较旧的AEM版本,如果您在日志中遇到异常​ 无法从此 ​中提取令牌,请升级到该AEM版本的最新CFP。

有关Facebook Graph API版本信息,请参阅Facebook API更改日志。

创建Facebook应用程序 create-a-facebook-app

要启用Facebook社交登录,需要正确配置的Facebook应用程序。

要创建Facebook应用程序,请按照https://developers.facebook.com/apps/上的Facebook说明进行操作。 对其说明所做的更改不会反映在以下信息中。

一般来说,从Facebook API v2.7开始:

  • 添加新的Facebook应用

    • 对于​平台,请选择网站:

      • 对于​站点URL,输入 https://<server>:<port>.
      • 对于​显示名称,请输入一个标题以用作Facebook连接服务的标题。
      • 对于​类别,建议为页面​ 选择 ​应用,但可以是任何内容。
      • 添加产品: Facebook登录名
      • 对于​有效的OAuth重定向URI,输入 https://<server>:<port>.
NOTE
在开发方面,http://localhost:4503将起作用。

创建应用程序后,找到​ 应用程序ID ​和​ 应用程序密钥 ​设置。 配置Facebook云服务时需要此信息。

创建Facebook Connect Cloud Service create-a-facebook-connect-cloud-service

通过创建云服务配置实例化的Adobe Granite OAuth应用程序和提供程序实例标识Facebook应用程序和添加新用户的成员组。

  1. 在AEM创作实例上,使用管理员权限登录。

  2. 从全局导航中,选择​工具 > 云服务 > Facebook社交登录配置。

  3. 选择配置​上下文路径。

    上下文路径​应与您在创建/编辑社区站点时选择的云配置路径相同。

  4. 检查是否已启用上下文路径以在其下方创建云服务。

  5. 转到​工具 > 常规 > 配置浏览器。 选择上下文并编辑属性。 启用云配置(如果尚未启用)。

    config-propertiespng

  6. 创建/编辑 Facebook云服务配置。

    fbsocialloginconfigpng

    • 标题 (必需)输入标识Facebook应用程序的显示标题。 使用与Facebook应用的​ 显示名称 ​输入的相同名称。
    • 应用程序ID/API密钥 (必需)输入Facebook应用程序的​应用程序ID。 这标识了通过对话框创建的Adobe Granite OAuth应用程序和提供程序实例。
    • 应用程序密钥 (必需)输入Facebook应用程序的​应用程序密钥。
    • 创建用户​如果选中,使用Facebook帐户登录将创建AEM用户条目,并将他们作为成员添加到选定的用户组。 默认处于选中状态(强烈推荐)。
    • 隐藏用户ID:保留为取消选择。
    • 范围电子邮件:应从Facebook中获取用户的电子邮件ID。
    • 添加到用户组​选择“添加用户组”为要向其添加用户的社区站点选择一个或多个成员组。
    note
    NOTE
    可以随时添加或删除组。 但现有用户的成员资格不受影响。 自动成员资格仅适用于此字段更新后创建的新用户。 对于禁用匿名用户的站点,选择将用户添加到对应于该已关闭社区站点的社区成员组。
    • 选择​保存。
    • 发布。

结果是一个Adobe Granite OAuth应用程序和提供程序实例,除非添加其他范围(权限),否则不需要进一步修改。 默认范围是Facebook登录的标准权限。 如果需要额外的范围,则需要直接编辑OSGI配置。 如果直接通过系统/控制台进行了修改,请避免从触屏UI编辑云服务配置以避免覆盖。

AEM Communities Facebook OAuth提供程序 aem-communities-facebook-oauth-provider

AEM Communities提供程序扩展Adobe Granite OAuth应用程序和提供程序实例。

此提供程序需要编辑以:

  • 允许用户更新

  • 在范围🔗中添加其他字段

    • 默认情况下,并不包括默认情况下允许的所有字段。

如果需要进行编辑,请在每个AEM发布实例上:

  1. 使用管理员权限登录。

  2. 导航到Web控制台。 例如,http://localhost:4503/system/console/configMgr。

  3. 找到AEM Communities Facebook OAuth提供程序。

  4. 选择铅笔图标以打开进行编辑。

    fboauthprovpng

    • OAuth提供程序ID

      (必需)默认值为​soco -facebook。 请勿编辑。

    • Cloud Service配置

      默认值为/etc/ cloudservices / facebookconnect。 请勿编辑。

    • OAuth提供程序服务配置

      默认值为/apps/social/facebookprovider/config/。 请勿编辑。

    • 启用标记

      请勿编辑。

    • 用户路径

      存储库中存储用户数据的位置。 对于社区站点,为确保成员能够查看彼此的配置文件,路径应为默认​/home/users/community。

    • 启用字段

      如果选中,则在向Facebook发出的用户身份验证和信息请求中会指定列出的字段。 默认值为取消选中。

    • 字段

      启用字段后,调用Facebook图形API时将包含以下字段。 这些字段必须在云服务配置中定义的范围内允许。 其他字段可能需要Facebook批准。 请参阅Facebook文档的“Facebook登录权限”部分。 添加为参数的默认字段包括:

      • id
      • name
      • 名字
      • last_name
      • 链接
      • 区域设置
      • 图片
      • 时区
      • 更新时间
      • 已验证
      • 电子邮件

    如果添加或更改了任何字段,请更新相应的默认同步处理程序配置以更正映射。

    • 更新用户

      如果选中,会在每次登录时刷新存储库中的用户数据,以反映配置文件更改或请求的其他数据。 默认值为取消选中。

后续步骤 next-steps

接下来的步骤对Facebook和Twitter都是相同的:

Twitter登录 twitter-login

创建Twitter应用程序 create-a-twitter-app

需要配置的Twitter应用程序才能启用Twitter社交登录。

按照最新说明在https://apps.twitter.com创建Twitter应用程序。

一般而言:

  1. 输入将向网站用户标识您的Twitter应用程序的​名称。

  2. 输入​描述。

  3. 对于​网站 — 输入https://<server>。

  4. 对于​回调URL — 输入https://server。

    note
    NOTE
    无需指定端口。
    对于开发,https://127.0.0.1/将起作用。
  5. 创建应用程序后,找到​ 使用者(API)密钥 ​和​使用者(API)密钥。 配置Twitter云服务时需要此信息。

权限 permissions

在Twitter应用程序管理的权限部分中:

  • 访问:选择Read only。

    • 不支持其他选项
  • 其他权限:可以选择选择Request email addresses from users。

    • 如果未选择,AEM中的用户配置文件将不会包含其电子邮件地址。
    • Twitter的说明指出了需要采取的额外步骤。

对社交登录发出的唯一REST请求是​GET帐户/验证凭据。

创建Twitter Connect Cloud Service create-a-twitter-connect-cloud-service

通过创建云服务配置实例化的Adobe Granite OAuth应用程序和提供程序实例标识Twitter应用程序和添加新用户的成员组。

  1. 在创作实例上,使用管理员权限登录。

  2. 从全局导航中,选择​工具 > 云服务 > Twitter社交登录配置。

  3. 选择​ 上下文路径 ​配置。

    上下文路径应与您在创建/编辑社区站点时选择的云配置路径相同。

  4. 检查是否已启用上下文路径以在其下方创建云服务。

  5. 转到​工具 > 常规 > 配置浏览器。 选择上下文并编辑属性。 启用云配置(如果尚未启用)。

    twitterconfigpropng

  6. 创建/编辑Twitter云服务配置。

    twittersocialloginpng

    • 标题

      (必需)输入用于标识Twitter应用程序的显示标题。 使用与Twitter应用程序的​ 显示名称 ​输入的相同名称。

    • 使用者密钥

      (必需)输入Twitter应用程序的​消费者(API)密钥。 这标识了通过对话框创建的Adobe Granite OAuth应用程序和提供程序实例。

    • 使用者密码

      (必需)输入Twitter应用程序的​消费者(API)密钥。

    • 创建用户

      如果选中,使用Twitter帐户登录将创建一个AEM用户条目,并将其作为成员添加到选定的用户组。 默认处于选中状态(强烈推荐)。

    • 隐藏用户ID

      保持取消选中状态。

    • 添加到用户组

      选择“添加用户组”为要向其添加用户的社区站点选择一个或多个成员组。

    note
    NOTE
    可以随时添加或删除组。 但现有用户的成员资格不受影响。 自动成员资格仅适用于此字段更新后创建的新用户。 对于禁用匿名用户的站点,将用户添加到对应于该已关闭社区站点的社区成员组。
  7. 选择​ 保存 ​和​发布。

结果是一个Adobe Granite OAuth应用程序和提供程序实例,不需要进一步修改。 默认范围是Twitter登录的标准权限。

AEM Communities Twitter OAuth提供程序 aem-communities-twitter-oauth-provider

AEM Communities配置扩展了Adobe Granite OAuth应用程序和提供程序实例。 此提供程序需要编辑才能允许用户更新。

如果需要进行编辑,请在每个AEM发布实例上:

  1. 使用管理员权限登录。

  2. 导航到Web控制台。

    例如,http://localhost:4503/system/console/configMgr。

  3. 找到AEM Communities Twitter OAuth提供程序。

  4. 选择铅笔图标以打开进行编辑。

    twitteroauthpng

    • OAuth提供程序ID

    (必需)默认值为​soco -twitter。 请勿编辑。

    • Cloud Service配置

      默认值为​conf. 请勿编辑。

    • OAuth提供程序服务配置

      默认值为 /apps/social/twitterprovider/config/。 请勿编辑。

    • 用户路径

      存储库中存储用户数据的位置。 对于社区站点,为确保成员能够查看彼此的配置文件,路径应为默认/home/users/community。

    • 启用参数 — 不编辑

    • URL参数 — 不编辑

    • 更新用户

      如果选中,会在每次登录时刷新存储库中的用户数据,以反映配置文件更改或请求的其他数据。 默认值为取消选中。

后续步骤 next-steps-1

接下来的步骤对Facebook和Twitter都是相同的:

启用社交登录 enable-social-login

AEM Communities Sites控制台 aem-communities-sites-console

配置云服务后,可以在社区站点创建或管理期间使用用户管理设置子面板为社区站点的相关社交登录设置启用该服务。

  1. 选择保存社交登录配置的站点配置上下文。

  2. 在常规选项卡上,设置云配置。

    managesitespng

  3. 在“设置”选项卡上,启用​ 社交登录 ​并保存。

    usermgmtpng

测试社交登录 test-social-login

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

AEM平台OAuth配置 aem-platform-oauth-configurations

Adobe Granite OAuth身份验证处理程序 adobe-granite-oauth-authentication-handler

默认情况下未启用Adobe Granite OAuth Authentication Handler,必须在所有AEM发布实例上启用​。

要在发布时启用身份验证处理程序,只需打开OSGi配置并保存它即可:

  • 使用管理员权限登录。
  • 导航到Web控制台。
    例如, http://localhost:4503/system/console/configMgr
  • 找到Adobe Granite OAuth Authentication Handler。
  • 选择以打开配置进行编辑。
  • 选择​保存。

graniteoauth

CAUTION
请注意不要将身份验证处理程序与​ Adobe Granite OAuth应用程序和提供程序 ​的Facebook或Twitter实例混淆。

graniteoauth1

Adobe Granite OAuth应用程序和提供程序 adobe-granite-oauth-application-and-provider

创建Facebook或Twitter云服务时,将创建Adobe Granite OAuth Authentication Handler的实例。

要查找为Facebook或Twitter应用程序创建的实例,请执行以下操作:

  1. 使用管理员权限登录。

  2. 导航到Web控制台。

    例如,http://localhost:4503/system/console/configMgr。

  3. 找到Adobe Granite OAuth应用程序和提供程序。

    • 找到​ 客户端ID ​与​ 应用程序ID ​匹配的实例。

      graniteoauth2

      除以下属性外,配置的其他属性保持不变:

    • 配置ID

      (必需) OAuth配置ID必须是唯一的。 在创建云服务时自动生成。

    • 客户端ID

      (必需)创建云服务时提供的应用程序ID。

    • 客户端密码

      (必需)创建云服务时提供的应用程序密钥。

    • 范围

      (可选)可以从提供程序请求其他允许的作用域。 默认范围包括提供社交身份验证和配置文件数据所需的权限。

    • 提供程序ID

      (必需)在创建云服务时设置了AEM Communities的提供程序ID。 请勿编辑。 对于Facebook Connect,值为​soco -facebook。 对于Twitter Connect,值为​soco -twitter。

    • 组

      (推荐)将一个或多个已创建用户的成员组添加到其中。 对于AEM Communities,建议列出社区站点的成员组。

    • 回调URL

      (可选) URL配置了OAuth提供程序,用于将客户端重定向回。 使用相对URL以使用原始请求的主机。 留空将改用最初请求的URL。 后缀“/callback/j_security_check”会自动附加到此URL 。

    note
    NOTE
    回调的域必须向提供商(Facebook或Twitter)注册。

对于每个OAuth身份验证处理程序配置,在该实例中创建两个其他配置:

  • Apache Jackrabbit Oak默认同步处理程序(org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler) — 无需进行编辑,但您可以查看用户字段映射,Facebook字段如何映射到CQ用户配置文件节点。 另请注意,“同步处理程序名称”与OAuth提供程序配置的配置ID匹配。
  • Apache Jackrabbit Oak外部登录模块(org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalLoginModuleFactory) — 无需进行编辑,但您可能会注意到“身份提供程序名称”和“同步处理程序名称”相同,分别指向相应的OAuth和同步处理程序配置。

有关详细信息,请参阅Authentication with Apache Oak外部登录模块。

OAuth用户遍历性能 oauth-user-traversal-performance

对于有数十万用户使用其Facebook或Twitter登录名注册的社区网站,可以通过添加以下Oak索引来提高网站访客使用其社交登录名时执行的查询的遍历性能。

如果日志中出现遍历警告,建议添加此索引。

在创作实例上,使用管理权限登录:

  1. 从全局导航中:选择​工具,CRX/DE Lite.

  2. 从ntBaseLucene的副本创建一个名为ntBaseLucene-oauth的索引:

    • 在节点/oak:index下
    • 选择节点ntBaseLucene
    • 选择​复制
    • 选择/oak:index
    • 选择​粘贴
    • 将ntBaseLucene的副本重命名为ntBaseLucene-oauth
  3. 修改node ntBaseLucene-oauth的属性:

    • indexPath: /oak:index/ntBaseLucene-oauth
    • 名称: oauthid-123****
    • 重新索引: true
    • reindexCount: 1
  4. 在节点/oak:index/ntBaseLucene-oauth/indexRules/nt:base/properties下:

    • 删除除cqTags之外的所有子节点。

    • 将cqTags重命名为oauthid-123****

    • 修改节点oauthid-123****的属性

      • 名称: oauthid-123****
    • 选择​全部保存。

有关其他信息和工具,请参阅Oak查询和索引。

Dispatcher 配置 dispatcher-configuration

请参阅为社区配置Dispatcher。

recommendation-more-help
experience-manager-65-help-communities