TrailheadのIdentity for Customersに外部IDユーザの設定についてのモジュールが公開されていたので、試してみました。顧客がソーシャルアカウントを使ってSalesforceの情報にアクセスしたり、モバイル端末との連携に役立つそうです。
1. 私のドメインの有効化
有効化が必要みたいです。
2. 外部IDユーザのプロファイルを作成します。
標準プロファイルとして『External Identity User』profileが用意されています。これをコピーして作成します。
3. ロールの用意
ロールの割り当てが必要になります。Customer Managerを用意しました。
システム管理者ユーザに割り当てます。
4. 取引先を作成
Customersという名前で取引先を作成します。
5. コミュニティを有効化
コミュニティを作成します。テンプレートは右下のApp Launcher。
6. コミュニティに参加可能なプロファイルを追加
7. コミュニティの公開
コミュニティビルダーに移動して公開します。
コミュニティの管理ページに戻るとログインページとパスワードリセットページがコミュニティビルダーページに差し替わっていることを確認できます。
8. ログインページにアクセス
ログインページにアクセスするとこのようにオシャレなページが表示されました。
9. ロゴの差し替え
DEMO用のロゴがGitHubに公開されています。
エラーが発生しました。解決方法はこちら。
10. 外部ユーザにセルフ登録を許可
ログイン&登録の設定ページで外部ユーザにセルフ登録を許可します。登録時のプロファイルと取引先を指定できます。
11. 新しいユーザの作成
セルフ登録を許可しておくとログインページに『Not a member?』リンクが表示されるようになります。
プロファイルとユーザライセンスが正しく登録されていることを確認します。
12. 認証プロバイダの設定 (Facebook Login)
Facebookアカウントでログインできるように認証プロバイダの設定を行います。
設定完了後に、テスト専用初期化 URLが生成されます。これで正常に動作するか確認できます。
テスト用認証画面で認証するとXMLファイルが生成されます。ユーザ情報が正しく取得できていることを確認できると思います。
13. コミュニティにFacebookでログイン機能を追加
コミュニティ管理のログイン設定ページにFacebookのチェックが追加されています。これにチェックをつけることでFacebookアカウントでログインできます。
ログインページを確認して見るとFacebookボタンが追加されました。
ボタンをクリックすると認証エラーが発生します。この問題の解決方法もTrailheadに紹介されています。
登録ハンドラテンプレートを自動生成のリンクをクリックします。
このようなApexクラスが生成されます。
GitHubにコードが公開されているので、その内容に差し替えます。
自分が試したときは次のエラーが発生しました。
ERROR_CREATING_USER: 言語: 制限つき選択リスト項目の値が不適切: ja_JP
英語版はこちら
ERROR_CREATING_USER: Language: bad value for restricted picklist field: ja_JP
調べてみたところ、原因はユーザ生成時の地域の問題でした。もともとUserInfoから取得していましたが、'ja'と指定すると解決しました。
これでFacebookボタンからログインすることができました。
アプリランチャーには顧客がアクセスできるアプリを表示できます。顧客はここから任意のアプリを選択して利用するという流れになるみたいです。
上記ではシステム管理者ユーザとFacebookアカウントが紐付く形になりました。このFacebookとSalesforceユーザとの紐付けの辺りがイマイチ理解できていないのですが、とりあえず認証プロバイダの設定を行ってFacebookログインの機能をコミュニティのログインページに追加することができました。
詳細はTrailheadで確認するのが良いと思います。