Facebook と Twitter を使用したソーシャルログイン social-login-with-facebook-and-twitter

ソーシャルログインとは、サイト訪問者にFacebookまたはTwitter アカウントでログインするオプションを提示する機能です。 したがって、許可されたFacebookまたはTwitterのデータをAEM会員プロファイルに含めます。

socialloginweretail

ソーシャルログインの概要 social-login-overview

ソーシャルログインを含めるには、カスタム FacebookおよびTwitter アプリケーションを作成することが​必要です。

we-retail サンプルは、サンプルのFacebook アプリとTwitter アプリおよびクラウドサービスを提供していますが、実稼動web サイト ​では利用できません。

必要な手順は次のとおりです。

  1. すべてのAEM パブリッシュインスタンスでOAuth認証を有効にします。

    OAuthを有効にしないと、ログインに失敗します。

  2. ソーシャルアプリとクラウドサービスを作成​します。

  3. コミュニティサイトの​ソーシャルログイン​を有効にする。

基本的な概念は次の2つです。

  1. スコープ (権限)は、アプリがリクエストを許可するデータを指定します。

  2. フィールド (パラメーター)は、URL パラメーターを使用して要求された実際のデータを指定します。

Facebook ログイン facebook-login

Facebook API バージョン facebook-api-version

ソーシャルログインとwe-retailのFacebook サンプルは、Facebook Graph 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 changelogを参照してください。

Facebook アプリの作成 create-a-facebook-app

Facebook ソーシャルログインを有効にするには、適切に設定されたFacebook アプリケーションが必要です。

Facebook アプリケーションを作成するには、https://developers.facebook.com/apps/にあるFacebookの指示に従ってください。 これらの指示の変更は、次の情報には反映されません。

一般に、Facebook API v2.7以降では、次のようになります。

  • 新しいFacebook アプリを追加

    • Platform​の場合は、Web サイトを選択します。

      • サイト 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 Application and Provider インスタンスは、新しいユーザーを追加するFacebook アプリケーションとメンバーグループを識別します。

  1. AEM オーサーインスタンスで、管理者権限でログインします。

  2. グローバルナビゲーションから、ツール/クラウドサービス/Facebook ソーシャルログイン設定​を選択します。

  3. 設定​ コンテキストパス ​を選択します。

    コンテキストパス​は、コミュニティサイトの作成/編集中に選択したクラウド設定パスと同じである必要があります。

  4. コンテキストパスがその下にクラウドサービスを作成するために有効になっているかどうかを確認します。

  5. ツール > 一般 > 設定ブラウザー​に移動します。 コンテキストを選択し、プロパティを編集します。 まだ有効になっていない場合は、クラウド設定を有効にします。

    config-propertiespng

  6. Facebook クラウドサービス設定を作成/編集。

    fbsocialloginconfigpng

    • タイトル (必須) Facebook アプリを識別する表示タイトルを入力します。 Facebook アプリの​ 表示名 ​と同じ名前を入力してください。
    • アプリ ID/API キー (必須) Facebook アプリの​ アプリ ID ​を入力します。 これにより、ダイアログから作成されたAdobe Granite OAuth Application and Provider インスタンスが特定されます。
    • アプリ秘密鍵 (必須) Facebook アプリの​ アプリ秘密鍵 ​を入力します。
    • Create Users オンにした場合、Facebook アカウントでログインすると、AEM ユーザーエントリが作成され、選択したユーザーグループにメンバーとして追加されます。 デフォルトはオンになっています(強くお勧めします)。
    • ユーザーIDをマスク:選択解除のままにします。
    • 範囲メール: ユーザーのメール IDをFacebookから取得する必要があります。
    • ユーザーグループに追加​を選択して、ユーザーを追加するコミュニティサイトの1つ以上の​ メンバーグループ ​を選択します。
    note
    NOTE
    グループはいつでも追加または削除できます。 ただし、既存のユーザーのメンバーシップには影響はありません。 自動メンバーシップは、このフィールドの更新後に作成される新規ユーザーにのみ適用されます。 匿名ユーザーが無効になっているサイトの場合は、閉じたコミュニティサイト用の対応するコミュニティメンバーグループにユーザーを追加することを選択します。
    • 保存​を選択します。
    • 公開。

その結果、Adobe Granite OAuth Application and Provider インスタンスが作成されます。このインスタンスは、スコープ(権限)を追加しない限り、追加の変更は必要ありません。 デフォルトのスコープは、Facebook ログインの標準的な権限です。 追加のスコープが必要な場合は、OSGI設定を直接編集する必要があります。 システム/コンソールから直接変更を行った場合は、上書きを避けるために、タッチ UIからクラウドサービス設定を編集しないでください。

AEM Communities Facebook OAuth プロバイダー aem-communities-facebook-oauth-provider

AEM Communities プロバイダーは、Adobe Granite OAuth Application and Provider インスタンスを拡張します。

このプロバイダーは、次の場所で編集する必要があります。

  • ユーザーによる更新を許可

  • 範囲🔗内の追加フィールドを追加します

    • デフォルトで許可されているすべてのフィールドがデフォルトで含まれているわけではありません。

編集が必要な場合は、各AEM パブリッシュインスタンスで次の操作を行います。

  1. 管理者権限でログインします。

  2. Web コンソール ​に移動します。 例:http://localhost:4503/system/console/configMgr

  3. AEM Communities Facebook OAuth プロバイダーを探します。

  4. 編集のために開く鉛筆アイコンを選択します。

    fboauthprovpng

    • OAuth プロバイダーID

      (必須) デフォルト値は​ soco -facebook ​です。 編集しないでください。

    • Cloud Service Config

      デフォルト値は /etc/ cloudservices / facebookconnect です。 編集しないでください。

    • OAuth プロバイダーサービス設定

      デフォルト値は /apps/social/facebookprovider/config/ です。 編集しないでください。

    • タグを有効にする

      編集しないでください。

    • ユーザーパス

      ユーザーデータが保存されているリポジトリ内の場所。 コミュニティサイトの場合、メンバーがお互いのプロファイルを表示するための権限を確保するには、パスをデフォルトの​ /home/users/community ​にする必要があります。

    • フィールドを有効にする

      チェックを入れた場合、リストされたフィールドは、ユーザーの認証と情報のためにFacebookへのリクエストで指定されます。 デフォルトの選択は解除されます。

    • フィールド

      フィールドが有効になっている場合、Facebook Graph APIの呼び出し時に次のフィールドが含まれます。 フィールドは、クラウドサービス設定で定義されたスコープ内で許可する必要があります。 追加のフィールドは、Facebookによる承認が必要な場合があります。 Facebook ドキュメントの「Facebook ログイン権限」セクションを参照してください。 パラメーターとして追加されるデフォルトのフィールドは次のとおりです。

      • id
      • name
      • first_name
      • last_name
      • リンク
      • locale
      • ピクチャ
      • タイムゾーン
      • updated_time
      • 検証済み
      • メール

    フィールドが追加または変更された場合は、対応するデフォルトの同期ハンドラー設定を更新して、マッピングを修正します。

    • ユーザーの更新

      オンにすると、各ログイン時にリポジトリ内のユーザーデータが更新され、プロファイルの変更や要求された追加データが反映されます。 デフォルトの選択は解除されます。

次の手順 next-steps

次の手順は、FacebookとTwitterの両方で同じです。

Twitter ログイン twitter-login

Twitter アプリの作成 create-a-twitter-app

Twitter ソーシャルログインを有効にするには、設定されたTwitter アプリケーションが必要です。

Twitter アプリケーションを作成するには、最新の手順(https://apps.twitter.com)に従ってください。

一般的には以下のようになります。

  1. Web サイトのユーザーにTwitter アプリケーションを識別する​ 名前 ​を入力します。

  2. 「説明」を入力します。

  3. web サイト​の場合:https://<server>と入力します。

  4. コールバック URL​の場合は、https://serverと入力します。

    note
    NOTE
    ポートを指定する必要はありません。
    開発の場合は、https://127.0.0.1/が機能します。
  5. アプリケーションを作成したら、Consumer (API) Key​と​ Consumer (API) Secret ​を見つけます。 この情報は、Twitter クラウドサービス ​の設定に必要です。

権限 permissions

Twitter アプリケーション管理の権限セクションで、次の操作を行います。

  • アクセス: Read onlyを選択します。

    • その他のオプションはサポートされていません
  • 追加の権限:オプションでRequest email addresses from usersを選択します。

    • 選択しない場合、AEMのユーザープロファイルにはメールアドレスが含まれません。
    • Twitterの指示は、追加の手順を記録します。

ソーシャルログインに対して行われたREST リクエストは、アカウントの取得/資格情報の確認​のみです。

Twitter Connect Cloud Serviceを作成する create-a-twitter-connect-cloud-service

クラウドサービス設定を作成してインスタンス化されたAdobe Granite OAuth Application and Provider インスタンスは、新しいユーザーを追加するTwitter アプリケーションとメンバーグループを識別します。

  1. オーサーインスタンスで、管理者権限でログインします。

  2. グローバルナビゲーションから、ツール/クラウドサービス/Twitter ソーシャルログイン設定​を選択します。

  3. コンテキストパス​設定を選択します。

    コンテキストパスは、コミュニティサイトの作成/編集時に選択したクラウド設定パスと同じである必要があります。

  4. コンテキストパスがその下にクラウドサービスを作成するために有効になっているかどうかを確認します。

  5. ツール > 一般 > 設定ブラウザー​に移動します。 コンテキストを選択し、プロパティを編集します。 まだ有効になっていない場合は、クラウド設定を有効にします。

    twitterconfigproppng

  6. Twitter クラウドサービス設定を作成/編集します。

    twittersocialloginpng

    • タイトル

      (必須) Twitter アプリを識別する表示タイトルを入力します。 Twitter アプリの​ 表示名 ​と同じ名前を入力してください。

    • コンシューマーキー

      (必須) Twitter アプリの​ 消費者(API) キー ​を入力します。 これにより、ダイアログから作成されたAdobe Granite OAuth Application and Provider インスタンスが特定されます。

    • コンシューマーシークレット

      (必須) Twitter アプリの​ Consumer (API) Secret ​を入力します。

    • ユーザーの作成

      チェックを入れた場合、Twitter アカウントでログインすると、AEM ユーザーエントリが作成され、選択したユーザーグループにメンバーとして追加されます。 デフォルトはオンになっています(強くお勧めします)。

    • ユーザーIDをマスク

      選択を解除したままにします。

    • ユーザーグループに追加

      「ユーザーグループを追加」を選択して、ユーザーを追加するコミュニティサイトの1つ以上の​ メンバーグループ ​を選択します。

    note
    NOTE
    グループはいつでも追加または削除できます。 ただし、既存のユーザーのメンバーシップには影響はありません。 自動メンバーシップは、このフィールドの更新後に作成される新規ユーザーにのみ適用されます。 匿名ユーザーが無効になっているサイトの場合は、閉じたコミュニティサイトを対象とした対応するコミュニティメンバーグループにユーザーを追加します。
  7. SAVE​と​ Publish ​を選択します。

その結果、Adobe Granite OAuth Application and Provider インスタンスが作成され、これ以上の変更は必要ありません。 デフォルトのスコープは、Twitter ログインの標準的な権限です。

AEM Communities Twitter OAuth プロバイダー aem-communities-twitter-oauth-provider

AEM Communities設定は、Adobe Granite OAuth Application and Provider インスタンスを拡張します。 このプロバイダーは、ユーザーの更新を許可するために編集が必要です。

編集が必要な場合は、各AEM パブリッシュインスタンスで次の操作を行います。

  1. 管理者権限でログインします。

  2. Web コンソール ​に移動します。

    例:http://localhost:4503/system/console/configMgr

  3. AEM Communities Twitter OAuth プロバイダーを探します。

  4. 編集のために開く鉛筆アイコンを選択します。

    twitteroauthpng

    • OAuth プロバイダーID

    (必須) デフォルト値は​ soco -twitter ​です。 編集しないでください。

    • Cloud Service Config

      デフォルト値は​ conf. ​です 編集しないでください。

    • OAuth プロバイダーサービス設定

      デフォルト値は /apps/social/twitterprovider/config/ です。 編集しないでください。

    • ユーザーパス

      ユーザーデータが保存されているリポジトリ内の場所。 コミュニティサイトの場合、メンバーがお互いのプロファイルを表示するための権限を確保するには、パスをデフォルトの/home/users/communityにする必要があります。

    • パラメーターを有効にする – 編集しない

    • URL パラメーター – 編集しない

    • ユーザーの更新

      オンにすると、各ログイン時にリポジトリ内のユーザーデータが更新され、プロファイルの変更や要求された追加データが反映されます。 デフォルトの選択は解除されます。

次の手順 next-steps-1

次の手順は、FacebookとTwitterの両方で同じです。

ソーシャルログインを有効にする enable-social-login

AEM Communities Sites Console aem-communities-sites-console

クラウドサービスを設定すると、コミュニティサイト 作成または管理中に、​ ユーザー管理設定サブパネルを使用して、コミュニティサイトの関連するソーシャルログイン設定に対してクラウドサービスを有効にすることができます。

  1. ソーシャルログイン設定を保存したサイト設定コンテキストを選択します。

  2. 「一般」タブで、クラウド設定を設定します。

    managesitespng

  3. 「設定」タブで、ソーシャルログイン​を有効にして保存します。

    usermgmtpng

ソーシャルログインのテスト test-social-login

  • すべてのパブリッシュインスタンスでAdobe Granite OAuth Authentication Handlerが有効になっていることを確認します。
  • クラウドサービスが公開されていることを確認します。
  • コミュニティサイトが公開されていることを確認します。
  • ブラウザーで公開したサイトを起動します。
    例:http://localhost:4503/content/sites/engage/en.html
  • 「ログイン」を選択します。
  • 「Facebookでログイン」または「Twitterでログイン」のいずれかを選択します。
  • FacebookまたはTwitterにまだログインしていない場合は、適切な資格情報でログインします。
  • FacebookやTwitter アプリで表示されるダイアログによっては、権限を付与する必要がある場合があります。
  • ページ上部のツールバーが更新され、正常なログインが反映されます。
  • 「プロファイル」を選択します。プロファイルページには、ユーザーのアバター画像、名、姓が表示されます。 許可されているフィールド/パラメーターに従って、FacebookまたはTwitter プロファイルからの情報も表示されます。

AEM Platform OAuth設定 aem-platform-oauth-configurations

Adobe Granite OAuth Authentication Handler 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 ApplicationおよびProvider ​の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 Application and Providerを探します。

    • クライアント ID​が​ アプリ ID ​と一致するインスタンスを見つけます。

      graniteoauth2

      次のプロパティを除き、設定のその他のプロパティは変更しないでください。

    • 設定ID

      (必須) OAuth設定IDは一意である必要があります。 クラウドサービスの作成時に自動生成。

    • クライアント ID

      (必須) クラウドサービスの作成時に指定されたアプリケーション ID。

    • クライアントの秘密鍵

      (必須) クラウドサービスの作成時に指定されたアプリケーション秘密鍵。

    • 範囲

      (オプション)許可される内容に関する追加の範囲は、プロバイダーから求めることができます。 デフォルトの範囲では、ソーシャル認証とプロファイルデータの提供に必要な権限がカバーされています。

    • プロバイダーID

      (必須) AEM CommunitiesのプロバイダーIDは、クラウドサービスの作成時に設定されます。 編集しないでください。 Facebook Connectの場合、値は​ soco -facebook ​です。 Twitter Connectの場合、値は​ soco -twitter ​です。

    • グループ

      (おすすめ)作成したユーザーが追加される1つ以上のメンバーグループ。 AEM Communitiesの場合は、コミュニティサイトのメンバーグループをリストアップすることをお勧めします。

    • コールバック URL

      (オプション)のURLは、クライアントをリダイレクトするためにOAuth プロバイダーで設定されています。 相対URLを使用して、元のリクエストのホストを使用します。 最初にリクエストされたURLを代わりに使用するには、空のままにします。 サフィックス「/callback/j_security_check」がこのURLに自動的に追加されます。

    note
    NOTE
    コールバックのドメインは、プロバイダー(FacebookまたはTwitter)に登録する必要があります。

OAuth認証ハンドラーの設定ごとに、インスタンスに2つの追加の設定が作成されます。

  • Apache Jackrabbit Oak Default Sync Handler (org.apache.jackrabbit.oak.spi.security.authentication.external.impl.DefaultSyncHandler) – そこでの編集は必要ありませんが、Facebook フィールドがCQ ユーザープロファイルノードにマッピングされる方法をユーザーフィールドマッピングで確認できます。 「Sync Handler Name」がOAuth プロバイダー設定の設定IDと一致していることも確認してください。
  • Apache Jackrabbit Oak External Login Module (org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalLoginModuleFactory) – そこでの編集は必要ありませんが、「ID プロバイダー名」と「同期ハンドラー名」が同じで、対応するOAuthと同期ハンドラーの設定を指していることに気付くかもしれません。

詳しくは、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. ノード ntBaseLucene-oauthのプロパティを変更します。

    • indexPath: /oak:index/ntBaseLucene-oauth
    • name: oauthid-123****
    • インデックス再作成: true
    • reindexCount: 1
  4. ノード /oak:index/ntBaseLucene-oauth/indexRules/nt:base/propertiesの下:

    • cqTagsを除くすべての子ノードを削除します。

    • cqTagsをoauthid-123****に変更します

    • ノード oauthid-123****のプロパティを変更します

      • name: oauthid-123****
    • 「すべて保存」を選択します。

  • name oauthid-123の場合、123​をAdobe Granite OAuth Application and Provider設定の​ クライアント ID ​の値であるFacebook アプリ ID​またはTwitter Consumer (API) Key​に置き換えます。

    graniteoauth-crxde

詳しくは、Oak クエリとインデックス作成を参照してください。

Dispatcher 設定 dispatcher-configuration

Dispatcher for Communitiesの設定を参照してください。

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