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

RegistrationHandler インターフェース

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

名前空間

Auth

使用方法

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

RegistrationHandler のメソッド

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

createUser(portalId, userData)

指定のポータル ID およびユーザ名、メールアドレスなどのサードパーティのユーザ情報を使用して User オブジェクトを返します。User オブジェクトはサードパーティのユーザ情報に対応し、データベースに挿入されていない新規ユーザまたはデータベース内の既存のユーザを表す可能性があります。

署名

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

パラメータ

portalId
型: ID
userData
型: Auth.UserData

戻り値

型: User

使用方法

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

updateUser(userId, portalId, userData)

指定のユーザの情報を更新します。ユーザが以前この認証プロバイダを使用してログインしたことがあり、再度ログインする場合、またはアプリケーションが [既存ユーザをリンクする URL] を使用している場合、このメソッドがコールされます。この URL は、認証プロバイダを定義すると生成されます。

署名

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 Class」を参照してください。

その他の 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 Class」を参照してください。

Auth.RegistrationHandler の実装例

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

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

Auth.RegistrationHandler のエラー例

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

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