tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:External Identity Userの設定を試してみました

TrailheadのIdentity for Customersに外部IDユーザの設定についてのモジュールが公開されていたので、試してみました。顧客がソーシャルアカウントを使ってSalesforceの情報にアクセスしたり、モバイル端末との連携に役立つそうです。

f:id:tyoshikawa1106:20160824183314p:plain

Identity for Customers | Salesforce Trailhead

1. 私のドメインの有効化

有効化が必要みたいです。
f:id:tyoshikawa1106:20160824183630p:plain

2. 外部IDユーザのプロファイルを作成します。

標準プロファイルとして『External Identity User』profileが用意されています。これをコピーして作成します。
f:id:tyoshikawa1106:20160824183852p:plain

3. ロールの用意

ロールの割り当てが必要になります。Customer Managerを用意しました。
f:id:tyoshikawa1106:20160824184357p:plain


システム管理者ユーザに割り当てます。
f:id:tyoshikawa1106:20160824184459p:plain

4. 取引先を作成

Customersという名前で取引先を作成します。
f:id:tyoshikawa1106:20160824184619p:plain

5. コミュニティを有効化

コミュニティを作成します。テンプレートは右下のApp Launcher。
f:id:tyoshikawa1106:20160824185138p:plain

f:id:tyoshikawa1106:20160824185158p:plain:w300

6. コミュニティに参加可能なプロファイルを追加

f:id:tyoshikawa1106:20160824185432p:plain

7. コミュニティの公開

コミュニティビルダーに移動して公開します。
f:id:tyoshikawa1106:20160824185746p:plain


コミュニティの管理ページに戻るとログインページとパスワードリセットページがコミュニティビルダーページに差し替わっていることを確認できます。

8. ログインページにアクセス

ログインページにアクセスするとこのようにオシャレなページが表示されました。
f:id:tyoshikawa1106:20160824190105p:plain

9. ロゴの差し替え

DEMO用のロゴがGitHubに公開されています。


エラーが発生しました。解決方法はこちら。

Unable to change logo on Communities login page

10. 外部ユーザにセルフ登録を許可

ログイン&登録の設定ページで外部ユーザにセルフ登録を許可します。登録時のプロファイルと取引先を指定できます。
f:id:tyoshikawa1106:20160824190910p:plain

11. 新しいユーザの作成

セルフ登録を許可しておくとログインページに『Not a member?』リンクが表示されるようになります。
f:id:tyoshikawa1106:20160824191627p:plain


プロファイルとユーザライセンスが正しく登録されていることを確認します。
f:id:tyoshikawa1106:20160824191923p:plain

12. 認証プロバイダの設定 (Facebook Login)

Facebookアカウントでログインできるように認証プロバイダの設定を行います。
f:id:tyoshikawa1106:20160824205332p:plain


設定完了後に、テスト専用初期化 URLが生成されます。これで正常に動作するか確認できます。
f:id:tyoshikawa1106:20160824205449p:plain


テスト用認証画面で認証するとXMLファイルが生成されます。ユーザ情報が正しく取得できていることを確認できると思います。

13. コミュニティにFacebookでログイン機能を追加

コミュニティ管理のログイン設定ページにFacebookのチェックが追加されています。これにチェックをつけることでFacebookアカウントでログインできます。
f:id:tyoshikawa1106:20160824205807p:plain


ログインページを確認して見るとFacebookボタンが追加されました。
f:id:tyoshikawa1106:20160824205945p:plain


ボタンをクリックすると認証エラーが発生します。この問題の解決方法もTrailheadに紹介されています。
f:id:tyoshikawa1106:20160824210048p:plain


登録ハンドラテンプレートを自動生成のリンクをクリックします。
f:id:tyoshikawa1106:20160824210405p:plain


このようなApexクラスが生成されます。
f:id:tyoshikawa1106:20160824210346p:plain


GitHubにコードが公開されているので、その内容に差し替えます。


自分が試したときは次のエラーが発生しました。
f:id:tyoshikawa1106:20160824210710p:plain

ERROR_CREATING_USER: 言語: 制限つき選択リスト項目の値が不適切: ja_JP


英語版はこちら

ERROR_CREATING_USER: Language: bad value for restricted picklist field: ja_JP


調べてみたところ、原因はユーザ生成時の地域の問題でした。もともとUserInfoから取得していましたが、'ja'と指定すると解決しました。
f:id:tyoshikawa1106:20160824211957p:plain


これでFacebookボタンからログインすることができました。
f:id:tyoshikawa1106:20160824212048p:plain


アプリランチャーには顧客がアクセスできるアプリを表示できます。顧客はここから任意のアプリを選択して利用するという流れになるみたいです。
f:id:tyoshikawa1106:20160824212154p:plain



上記ではシステム管理者ユーザとFacebookアカウントが紐付く形になりました。このFacebookとSalesforceユーザとの紐付けの辺りがイマイチ理解できていないのですが、とりあえず認証プロバイダの設定を行ってFacebookログインの機能をコミュニティのログインページに追加することができました。


詳細はTrailheadで確認するのが良いと思います。

追記

ソーシャルログイン時のユーザの紐付がよくわからなかったのですが、ソーシャルログインすると新規ユーザが登録される処理となっていました。