Facebook と Twitter を使用したソーシャルログイン social-login-with-facebook-and-twitter
ソーシャルログインとは、サイト訪問者にFacebookまたはTwitter アカウントでログインするオプションを提示する機能です。 したがって、許可されたFacebookまたはTwitterのデータをAEM会員プロファイルに含めます。
ソーシャルログインの概要 social-login-overview
ソーシャルログインを含めるには、カスタム FacebookおよびTwitter アプリケーションを作成することが必要です。
we-retail サンプルは、サンプルのFacebook アプリとTwitter アプリおよびクラウドサービスを提供していますが、実稼動web サイト では利用できません。
必要な手順は次のとおりです。
-
すべてのAEM パブリッシュインスタンスでOAuth認証を有効にします。
OAuthを有効にしないと、ログインに失敗します。
-
ソーシャルアプリとクラウドサービスを作成します。
-
Facebookでのログインをサポートするには:
- Facebook アプリ を作成します。
- Facebook Connect クラウドサービス を作成して公開します。
-
Twitterでのログインをサポートするには:
- Twitter アプリ を作成します。
- Twitter Connect クラウドサービス を作成して公開します。
-
-
コミュニティサイトのソーシャルログインを有効にする。
基本的な概念は次の2つです。
-
スコープ (権限)は、アプリがリクエストを許可するデータを指定します。
- FacebookおよびTwitter Adobe Granite OAuth Application and Provider インスタンスには、デフォルトで、スコープ内に基本的なアプリ権限が含まれています。
-
フィールド (パラメーター)は、URL パラメーターを使用して要求された実際のデータを指定します。
- これらのフィールドは、AEM Communities Facebook OAuth ProviderおよびAEM Communities Twitter OAuth Providerで指定されます。
- デフォルトのフィールドは、ほとんどのユースケースで十分ですが、変更できます。
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 バージョンと連携するように更新されました。
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>.と入力します
- サイト URLの場合、
-
アプリケーションを作成したら、アプリ IDと アプリ シークレット の設定を見つけます。 この情報は、Facebook クラウドサービス の設定に必要です。
Facebook Connect Cloud Serviceの作成 create-a-facebook-connect-cloud-service
クラウドサービス設定を作成してインスタンス化されたAdobe Granite OAuth Application and Provider インスタンスは、新しいユーザーを追加するFacebook アプリケーションとメンバーグループを識別します。
-
AEM オーサーインスタンスで、管理者権限でログインします。
-
グローバルナビゲーションから、ツール/クラウドサービス/Facebook ソーシャルログイン設定を選択します。
-
設定 コンテキストパス を選択します。
コンテキストパスは、コミュニティサイトの作成/編集中に選択したクラウド設定パスと同じである必要があります。
-
コンテキストパスがその下にクラウドサービスを作成するために有効になっているかどうかを確認します。
-
ツール > 一般 > 設定ブラウザーに移動します。 コンテキストを選択し、プロパティを編集します。 まだ有効になっていない場合は、クラウド設定を有効にします。
- 詳しくは、設定ブラウザーのドキュメントを参照してください。
-
Facebook クラウドサービス設定を作成/編集。
- タイトル (必須) 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 パブリッシュインスタンスで次の操作を行います。
-
管理者権限でログインします。
-
Web コンソール に移動します。 例:http://localhost:4503/system/console/configMgr
-
AEM Communities Facebook OAuth プロバイダーを探します。
-
編集のために開く鉛筆アイコンを選択します。
-
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)に従ってください。
一般的には以下のようになります。
-
Web サイトのユーザーにTwitter アプリケーションを識別する 名前 を入力します。
-
「説明」を入力します。
-
web サイトの場合:
https://<server>と入力します。 -
コールバック URLの場合は、
https://serverと入力します。note NOTE ポートを指定する必要はありません。 開発の場合は、https://127.0.0.1/が機能します。 -
アプリケーションを作成したら、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 アプリケーションとメンバーグループを識別します。
-
オーサーインスタンスで、管理者権限でログインします。
-
グローバルナビゲーションから、ツール/クラウドサービス/Twitter ソーシャルログイン設定を選択します。
-
コンテキストパス設定を選択します。
コンテキストパスは、コミュニティサイトの作成/編集時に選択したクラウド設定パスと同じである必要があります。
-
コンテキストパスがその下にクラウドサービスを作成するために有効になっているかどうかを確認します。
-
ツール > 一般 > 設定ブラウザーに移動します。 コンテキストを選択し、プロパティを編集します。 まだ有効になっていない場合は、クラウド設定を有効にします。
- 詳しくは、設定ブラウザーのドキュメントを参照してください。
-
Twitter クラウドサービス設定を作成/編集します。
-
タイトル
(必須) Twitter アプリを識別する表示タイトルを入力します。 Twitter アプリの 表示名 と同じ名前を入力してください。
-
コンシューマーキー
(必須) Twitter アプリの 消費者(API) キー を入力します。 これにより、ダイアログから作成されたAdobe Granite OAuth Application and Provider インスタンスが特定されます。
-
コンシューマーシークレット
(必須) Twitter アプリの Consumer (API) Secret を入力します。
-
ユーザーの作成
チェックを入れた場合、Twitter アカウントでログインすると、AEM ユーザーエントリが作成され、選択したユーザーグループにメンバーとして追加されます。 デフォルトはオンになっています(強くお勧めします)。
-
ユーザーIDをマスク
選択を解除したままにします。
-
ユーザーグループに追加
「ユーザーグループを追加」を選択して、ユーザーを追加するコミュニティサイトの1つ以上の メンバーグループ を選択します。
note NOTE グループはいつでも追加または削除できます。 ただし、既存のユーザーのメンバーシップには影響はありません。 自動メンバーシップは、このフィールドの更新後に作成される新規ユーザーにのみ適用されます。 匿名ユーザーが無効になっているサイトの場合は、閉じたコミュニティサイトを対象とした対応するコミュニティメンバーグループにユーザーを追加します。 -
-
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 パブリッシュインスタンスで次の操作を行います。
-
管理者権限でログインします。
-
Web コンソール に移動します。
例:http://localhost:4503/system/console/configMgr
-
AEM Communities Twitter OAuth プロバイダーを探します。
-
編集のために開く鉛筆アイコンを選択します。
- 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
クラウドサービスを設定すると、コミュニティサイト 作成または管理中に、 ユーザー管理設定サブパネルを使用して、コミュニティサイトの関連するソーシャルログイン設定に対してクラウドサービスを有効にすることができます。
-
ソーシャルログイン設定を保存したサイト設定コンテキストを選択します。
-
「一般」タブで、クラウド設定を設定します。
-
「設定」タブで、ソーシャルログインを有効にして保存します。
ソーシャルログインのテスト 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を見つけます。- を選択して、編集する設定を開きます。
- 「保存」を選択します。
Adobe Granite OAuth アプリケーションとプロバイダー adobe-granite-oauth-application-and-provider
FacebookまたはTwitter用のクラウドサービスが作成されると、Adobe Granite OAuth Authentication Handlerのインスタンスが作成されます。
FacebookまたはTwitter アプリ用に作成されたインスタンスを見つけるには:
-
管理者権限でログインします。
-
Web コンソール に移動します。
例:http://localhost:4503/system/console/configMgr
-
Adobe Granite OAuth Application and Providerを探します。
-
クライアント IDが アプリ ID と一致するインスタンスを見つけます。
次のプロパティを除き、設定のその他のプロパティは変更しないでください。
-
設定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 インデックスを追加することで向上できます。
ログにトラバーサル警告が表示される場合は、このインデックスを追加することをお勧めします。
オーサーインスタンスで、管理者権限でログインした場合:
-
グローバルナビゲーションから:ツール、CRX/DE Liteを選択します。
-
ntBaseLuceneのコピーからntBaseLucene-oauthという名前のインデックスを作成します。
- ノード
/oak:indexの下 - ノード
ntBaseLuceneを選択 - コピーを選択
/oak:indexを選択します。- 貼り付けを選択
- ntBaseLuceneのコピー名を
ntBaseLucene-oauthに変更
- ノード
-
ノード ntBaseLucene-oauthのプロパティを変更します。
- indexPath:
/oak:index/ntBaseLucene-oauth - name:
oauthid-123**** - インデックス再作成:
true - reindexCount:
1
- indexPath:
-
ノード /oak:index/ntBaseLucene-oauth/indexRules/nt:base/propertiesの下:
-
cqTagsを除くすべての子ノードを削除します。
-
cqTagsを
oauthid-123****に変更します -
ノード
oauthid-123****のプロパティを変更します- name:
oauthid-123****
- name:
-
「すべて保存」を選択します。
-
-
name
oauthid-123の場合、123をAdobe Granite OAuth Application and Provider設定の クライアント ID の値であるFacebook アプリ IDまたはTwitter Consumer (API) Keyに置き換えます。
詳しくは、Oak クエリとインデックス作成を参照してください。
Dispatcher 設定 dispatcher-configuration
Dispatcher for Communitiesの設定を参照してください。