Facebook と Twitter を使用したソーシャルログイン social-login-with-facebook-and-twitter
ソーシャルログインでは、サイト訪問者が自分のFacebookまたはTwitterアカウントを使用してログインするオプションを提供できます。 そのため、AEM メンバープロファイルには、許可されたFacebookまたはTwitterデータを含めます。
ソーシャルログインの概要 social-login-overview
ソーシャルログインを含めるには、カスタム FacebookおよびTwitterアプリケーションを作成する 必須 必要です。
we-retail サンプルは、Facebook、Twitterアプリおよびクラウドサービスのサンプルを提供しますが、 実稼動 web サイトでは使用できません。
必要な手順は次のとおりです。
-
すべてのAEM パブリッシュインスタンスで OAuth 認証を有効にするを行います。
OAuth が有効になっていない場合、ログインの試みは失敗します。
-
ソーシャルアプリとクラウドサービスの 作成。
-
facebookへのログインをサポートするには:
- Facebook アプリを作成します。
- Facebook Connect Cloud Service を作成して公開します。
-
twitterでのログインをサポートするには:
- Twitterアプリを作成します。
- Twitter接続クラウドサービスを作成して公開します。
-
-
コミュニティサイトの 有効 ソーシャルログイン。
次の 2 つの基本概念があります。
-
範囲 (権限)は、アプリがリクエストできるデータを指定します。
- facebookおよびTwitter AdobeGranite OAuth Application および Provider インスタンスには、デフォルトで、それらの範囲内に基本アプリ権限が含まれています。
-
Fields (params):URL パラメーターを使用してリクエストされた実際のデータを指定します。
- これらのフィールドは、AEM Communities Facebook OAuth プロバイダーおよび AEM Communities Twitter OAuth プロバイダーで指定されます。
- ほとんどのユースケースではデフォルトフィールドで十分ですが、変更可能です。
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 の変更ログを参照してください。
facebook アプリケーションの作成 create-a-facebook-app
facebook ソーシャルログインを有効にするには、適切に設定されたFacebook アプリケーションが必要です。
facebook アプリケーションを作成するには、https://developers.facebook.com/apps/ にあるFacebookの手順に従います。 手順の変更は、次の情報には反映されません。
一般に、Facebook API v2.7 の時点では次のようになります。
-
新しいFacebook アプリを追加する
-
Platform の場合は、「Website」を選択します。
- サイト URL に
https://<server>:<port>.
と入力します - 表示名 には、Facebook Connect サービスのタイトルとして使用するタイトルを入力します。
- カテゴリ の場合は、「ページ用アプリ を選択することをお勧めしますが 何でもかまいません。
- 製品を追加:Facebook ログイン
- 有効な OAuth リダイレクト URI に
https://<server>:<port>.
と入力します
- サイト URL に
-
アプリケーションが作成されたら、「アプリ ID および アプリの秘密鍵 の設定を見つけ す。 この情報は、Facebook Cloud Service の設定に必要です。
facebook Connect Cloud Serviceの作成 create-a-facebook-connect-cloud-service
クラウドサービス設定を作成してインスタンス化された AdobeGranite OAuth アプリケーションとプロバイダーインスタンスは、新しいユーザーが追加されるFacebook アプリケーションとメンバーグループを特定します。
-
AEM オーサーインスタンスで、管理者権限でログインします。
-
グローバルナビゲーションから、「ツール/Cloud Service/Facebook ソーシャルログイン設定」を選択します。
-
設定 コンテキストパス を選択します。
コンテキストパス は、コミュニティサイトの作成または編集時に選択したクラウド設定パスと同じである必要があります。
-
コンテキストパスが有効でその下にクラウドサービスを作成できるかどうかを確認します。
-
ツール/一般/設定ブラウザー に移動します。 コンテキストを選択してプロパティを編集します。 まだ有効になっていない場合は、クラウド設定を有効にします。
- 詳しくは、設定ブラウザーのドキュメントを参照してください。
-
作成/編集 Facebook クラウドサービスの設定。
- タイトル (必須)Facebook アプリを識別する表示タイトルを入力します。 facebook アプリの 表示名 として入力したのと同じ名前を使用します。
- アプリ ID/API キー (必須)Facebook アプリの アプリ ID を入力します。 これにより、ダイアログから作成された Adobeの Granite OAuth アプリケーションおよびプロバイダーインスタンスが識別されます。
- アプリの秘密鍵 (必須)Facebook アプリの アプリの秘密鍵 を入力します。
- ユーザーを作成 オンにすると、Facebook アカウントでログインした場合、AEM ユーザーエントリが作成され、選択したユーザーグループにメンバーとして追加されます。 デフォルトではオンになっています(強く推奨)。
- ユーザー ID をマスク:選択を解除したままにします。
- 範囲メール:ユーザーのメール ID をFacebookから取得する必要があります。
- ユーザーグループに追加 「ユーザーグループを追加」を選択して、ユーザーを追加するコミュニティサイトに 1 つ以上の メンバーグループを選択します。
note note NOTE グループはいつでも追加または削除できます。 ただし、既存のユーザーのメンバーシップは影響を受けません。 自動メンバーシップは、このフィールドの更新後に作成される新規ユーザーにのみ適用されます。 匿名ユーザーが無効になっているサイトの場合は、閉じられたコミュニティサイト用の対応するコミュニティメンバーグループにユーザーを追加することを選択します。 - 保存 を選択します。
- Publish。
その結果、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設定
デフォルト値は
/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
- 画像
- timezone
- updated_time
- 検証済み
フィールドを追加または変更した場合は、対応するデフォルトの同期ハンドラー設定を更新してマッピングを修正します。
-
ユーザーの更新
オンにすると、各ログイン時にリポジトリ内のユーザーデータが更新され、プロファイルの変更やリクエストされた追加データが反映されます。 デフォルトでは選択されていません。
-
次の手順 next-steps
次の手順は、FacebookとTwitterの両方で同じです。
Twitterログイン twitter-login
twitterアプリの作成 create-a-twitter-app
twitterソーシャルログインを有効にするには、設定済みのTwitterアプリケーションが必要です。
最新の手順に従って、https://apps.twitter.com でTwitterアプリケーションを作成します。
一般的には以下のようになります。
-
Web サイトのユーザーに対するTwitterアプリケーションを識別する 名前 を入力します。
-
「説明」を入力します。
-
web サイト の場合 –
https://<server>
と入力します。 -
コールバック URL の場合 –
https://server
と入力します。note note NOTE ポートを指定する必要はありません。 開発の場合、https://127.0.0.1/が機能します。 -
アプリケーションが作成されたら、Consumer (API) キー および Consumer (API) シークレット を見つけます。 この情報は、Twitterクラウドサービスを設定するために必要になります。
権限 permissions
twitterアプリケーション管理の「権限」セクションで、次の操作を行います。
-
アクセス:
Read only
を選択します。- その他のオプションはサポートされていません
-
追加の権限:必要に応じて
Request email addresses from users
を選択します。- 選択しない場合、AEMのユーザープロファイルには、メールアドレスが含まれません。
- Twitterの手順:実行する追加の手順を示します。
ソーシャルログイン用に行われる REST リクエストは、GETアカウント /資格情報の検証 のみです。
twitter接続Cloud Serviceを作成する create-a-twitter-connect-cloud-service
クラウドサービス設定を作成してインスタンス化された AdobeGranite OAuth アプリケーションとプロバイダーインスタンスは、新しいユーザーが追加されるTwitterアプリケーションとメンバーグループを特定します。
-
オーサーインスタンスで、管理者権限でログインします。
-
グローバルナビゲーションから、「ツール」/「Cloud Service」/「Twitterのソーシャルログイン設定」を選択します。
-
コンテキストパス 設定を選択します。
コンテキストパスは、コミュニティサイトの作成または編集時に選択したクラウド設定パスと同じである必要があります。
-
コンテキストパスが有効でその下にクラウドサービスを作成できるかどうかを確認します。
-
ツール/一般/設定ブラウザー に移動します。 コンテキストを選択してプロパティを編集します。 まだ有効になっていない場合は、クラウド設定を有効にします。
- 詳しくは、設定ブラウザーのドキュメントを参照してください。
-
twitterクラウドサービス設定を作成/編集します。
-
タイトル
(必須)Twitterアプリを識別する表示タイトルを入力します。 twitterアプリの 表示名 として入力したのと同じ名前を使用します。
-
コンシューマーキー
(必須)Twitterアプリの コンシューマー(API)キー を入力します。 これにより、ダイアログから作成された Adobeの Granite OAuth アプリケーションおよびプロバイダーインスタンスが識別されます。
-
消費者の秘密鍵
(必須)Twitterアプリの Consumer (API) Secret を入力します。
-
ユーザーの作成
オンにした場合、Twitterアカウントでログインすると、AEM ユーザーのエントリが作成され、それらのエントリがメンバーとして選択したユーザーグループに追加されます。 デフォルトではオンになっています(強く推奨)。
-
ユーザー ID をマスク
選択を解除したままにします。
-
ユーザーグループに追加
「ユーザーグループを追加」を選択して、ユーザーを追加するコミュニティサイトに 1 つ以上の メンバーグループを選択します。
note note NOTE グループはいつでも追加または削除できます。 ただし、既存のユーザーのメンバーシップは影響を受けません。 自動メンバーシップは、このフィールドの更新後に作成される新規ユーザーにのみ適用されます。 匿名ユーザーが無効になっている Sites の場合、閉じられたコミュニティサイト用の、対応するコミュニティメンバーグループにユーザーを追加します。 -
-
SAVE と Publish を選択します。
その結果、Adobeの Granite OAuth アプリケーションおよびプロバイダーインスタンスが生成されます。このインスタンスを後で修正する必要はありません。 デフォルトの範囲は、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 CommunitiesTwitterOAuth プロバイダーを見つけます。
-
編集する鉛筆アイコンを選択します。
- 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
クラウドサービスを設定したら、コミュニティサイト 作成または 管理の際に ユーザー管理設定サブパネルを使用して、コミュニティサイトに関連するソーシャルログイン設定を有効にできます。
-
ソーシャルログイン設定を保存したサイト設定コンテキストを選択します。
-
「一般」タブで、クラウド設定を指定します。
-
「設定」タブで、「ソーシャルログイン」を有効にして「保存」をクリックします。
ソーシャルログインのテスト test-social-login
- すべてのパブリッシュインスタンスで AdobeGranite OAuth 認証ハンドラーが有効になっていることを確認します。
- クラウドサービスが公開されていることを確認します。
- コミュニティサイトが公開されていることを確認します。
- 公開したサイトをブラウザーで起動します。
例: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 認証ハンドラー 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用の Cloud Service を作成すると、Adobe Granite OAuth Authentication Handler
のインスタンスが作成されます。
facebookまたはTwitterアプリケーション用に作成されたインスタンスを見つけるには:
-
管理者権限でログインします。
-
Web コンソールに移動します。
例えば、http://localhost:4503/system/console/configMgrです。
-
「Granite OAuth アプリケーションとプロバイダー」というAdobeを見つけます。
-
クライアント ID が アプリ ID と一致するインスタンスを見つけます。
次のプロパティ以外は、設定のその他のプロパティは変更しません。
-
設定 ID
(必須) OAuth 設定 ID は一意である必要があります。 Cloud Service の作成時に自動生成されます。
-
クライアント ID
(必須) Cloud Service の作成時に指定されたアプリケーション ID。
-
クライアントの秘密鍵
(必須) Cloud Service の作成時に提供されたアプリケーションの秘密鍵。
-
範囲
(オプション)許可される内容に関する追加の範囲は、プロバイダーに問い合わせることができます。 デフォルトの範囲は、ソーシャル認証とプロファイルデータを提供するために必要な権限をカバーしています。
-
プロバイダー ID
(必須)AEM Communitiesのプロバイダー ID は、Cloud Service の作成時に設定されます。 編集しないでください。 facebook Connect の場合、値は soco -facebook です。 twitter接続の場合、値は soco -twitter です。
-
グループ
(推奨)作成したユーザーを追加する 1 つ以上のメンバーグループ。 AEM Communitiesの場合、コミュニティサイトのメンバーグループをリストすることをお勧めします。
-
コールバック URL
(任意)クライアントをリダイレクトして戻す、OAuth プロバイダーで設定された URL。 元のリクエストのホストを使用するには、相対 url を使用します。 最初にリクエストした URL を代わりに使用するには、空のままにします。 この URL には、「/callback/j_security_check」というサフィックスが自動的に追加されます。
note note NOTE コールバックのドメインは、プロバイダー(FacebookまたはTwitter)に登録する必要があります。 -
OAuth 認証ハンドラー設定ごとに、インスタンスに次の 2 つの追加設定が作成されます。
- Apache Jackrabbit Oak デフォルト同期ハンドラー(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) – 必要な編集はありませんが、「Identity Provider Name」と「Sync Handler Name」が同じで、対応する OAuth 設定と同期ハンドラー設定をそれぞれ指していることに気付くかもしれません。
詳しくは、Apache Oak External Login Module による認証を参照してください。
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​**​**
- reindex:
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 をFacebook アプリ ID またはTwitter コンシューマー(API) キー に置き換えます。これは、AdobeGranite OAuth Application and Provider 設定の クライアント ID の値です。
詳細およびツールについては、Oak クエリとインデックス作成を参照してください。
Dispatcher 設定 dispatcher-configuration
Communities 用のDispatcherの設定を参照してください。