この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

RegistrationHandler インターフェース

Salesforce では、Salesforce へのシングルサインオンに Facebook©、Janrain© などの認証プロバイダーを使用する機能を提供します。

名前空間

Auth

使用方法

シングルサインオンを設定するには、Auth.RegistrationHandler を実装するクラスを作成する必要があります。Auth.RegistrationHandler インターフェースを実装するクラスは、認証プロバイダー定義に [登録ハンドラー] として指定され、Facebook などのサードパーティのサービスから Salesforce ポータルと組織へのシングルサインオンを有効にします。クラスは、認証プロバイダーの情報を使用して、関連付けられた取引先レコードと取引先責任者レコードも含めて、ユーザーデータの作成と更新のロジックを必要に応じて実行する必要があります。

ユーザーの更新プロセスで confirmUser() メソッドを使用すると、ユーザーが Salesforce とサードパーティの間で正しく対応付けられたことを確認できます。詳細は、「ConfirmUserRegistrationHandler インターフェース」を参照してください。

メモ

RegistrationHandler のメソッド

RegistrationHandler のメソッドは次のとおりです。

createUser(portalId, userData)

指定のポータル ID およびユーザー名、メールアドレスなどのサードパーティのユーザー情報を使用して User オブジェクトを返します。User オブジェクトはサードパーティのユーザー情報に対応します。これは、組織のデータベースに挿入されていない新しいユーザーにすることも、データベースの既存のユーザーレコードにすることもできます。新しい User オブジェクトの場合、Salesforce がユーザーレコードを挿入します。

署名

public User createUser(ID portalId, Auth.UserData userData)

パラメーター

portalId
型: ID
userData
型: Auth.UserData

戻り値

型: User

使用方法

このプロバイダーにポータルが設定されていない場合は、portalID 値が NULL または空のキーになる場合があります。

updateUser(userId, portalId, userData)

指定のユーザーの情報を更新します。ユーザーが以前この認証プロバイダーを使用してログインしたことがあり、再度ログインする場合、このメソッドがコールされます。

署名

public Void updateUser(ID userId, ID portalId, Auth.UserData userData)

パラメーター

userId
型: ID
portalId
型: ID
userData
型: Auth.UserData

戻り値

型: Void

使用方法

このプロバイダーにポータルが設定されていない場合は、portalID 値が NULL または空のキーになる場合があります。

ユーザー情報の保存とアクセストークンの取得

Auth.UserData クラスは、Auth.RegistrationHandler のユーザー情報を保存するために使用されます。サードパーティ認証プロバイダーは、ユーザー名、メールアドレス、ロケールなど、ユーザーに関する多くのデータを返送できます。頻繁に使用されるデータは、Auth.UserData クラスで共通の形式に変換され、登録ハンドラーに送信されます。

登録ハンドラーが残りのデータを使用する場合のために、Auth.UserData クラスには attributeMap 変数が用意されています。属性の対応付けは、サードパーティからの全データの未加工値に対する文字列 (Map<String, String>) の対応付けです。対応付けは <String, String> であるため、サードパーティが返す文字列以外の値 (URL の配列や対応付けなど) は、適切な文字列表現に変換されます。対応付けには、サードパーティ認証プロバイダーから返されたすべてデータが含まれます。これには、自動的に共通形式に変換されたデータも含まれます。

Auth.UserData のコンストラクターの構文は次のとおりです。

Auth.UserData プロパティについての詳細は、「Auth.UserData クラス」を参照してください。

その他の sObject に対する DML オペレーションは、特定の状況で User オブジェクトと同じトランザクションでのみ実行できます。詳細は、「DML 操作で同時に使用できない sObject」を参照してください。

メモ

Janrain 以外のすべての認証プロバイダーでは、ユーザーがプロバイダーを使用して認証されたら、Auth.AuthToken Apex クラスを使用して、そのプロバイダーに関連付けられたこのユーザー用のアクセストークンを Apex で取得できます。Auth.AuthToken には、アクセストークンを取得する 2 つのメソッドが含まれています。1 つは単一のアクセストークンを取得する getAccessToken です。ユーザー ID が単一のサードパーティユーザーに対応付けられている場合は、このメソッドを使用します。ユーザー ID が複数のサードパーティユーザーに対応付けられている場合は、サードパーティユーザーごとにアクセストークンの対応付けを返す getAccessTokenMap を使用します。認証プロバイダーについての詳細は、Salesforce ヘルプ「認証プロバイダー」を参照してください。

認証プロバイダーとして Janrain を使用する場合、Janrain accessCredentials 辞書の値を使用してアクセストークンまたは同等の項目を取得する必要があります。Janrain でサポートされている一部のプロバイダーのみがアクセストークンを提供し、その他のプロバイダーは他の項目を使用します。Janrain accessCredentials の項目は、Auth.UserData クラスの attributeMap 変数で返されます。accessCredentials についての詳細は、Janrain auth_info のドキュメントを参照してください。

すべての Janrain のアカウントの種類が accessCredentials を返すとは限りません。情報を受信するのに、アカウントの種類の変更が必要な場合があります。

メモ

Auth.AuthToken メソッドについての詳細は、「Auth.AuthToken クラス」を参照してください。

Auth.RegistrationHandler の実装例

この例では、認証プロバイダーが提供するデータに基づいて標準ユーザーを作成および更新する Auth.RegistrationHandler インターフェースを実装します。ここでは、例を単純化するためにエラーチェックを省略しています。

次の例では、上記のコードをテストします。

Auth.RegistrationHandler のエラー例

この例は、Auth.RegistrationHandler インターフェースを実装し、カスタム例外を使用してページの URL にエラーメッセージを表示する方法を示しています。カスタム例外を使用しない場合は、エラーコードと説明が URL に表示され、エラー説明がこのページに表示されます。

この例では、カスタム例外に限定するために一部のコードが省略されています。