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

UserManagement クラス

エンドユーザの管理 (検証方法の登録、ID の検証、個人情報の削除など) を行うためのメソッドが含まれます。

名前空間

System

使用方法

ユーザが ID 検証方法を登録および登録解除できます。パスワードなしのログインおよびセルフ登録用のカスタムログインページおよび検証ページを作成します。ユーザを登録する前に携帯電話番号を適切な形式に変換します。Salesforce が個人情報の削除をユーザから要求されたときに、ユーザデータをスクランブルします。

このクラスは、API バージョン 43.0 以降で使用できます。

UserManagement メソッド

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

clone()

System.UserManagement オブジェクトの重複コピーを作成します。

署名

public Object clone()

戻り値

型: UserManagement

deregisterVerificationMethod(userId, method)

ID 検証方法の登録を解除します。このメソッドを使用すると、ユーザが既存の検証方法を削除できます。

署名

public static void deregisterVerificationMethod(Id userId, Auth.VerificationMethod method)

パラメータ

userId
型: Id
検証方法の登録を解除しているユーザのユーザ ID。
method
型: Auth.VerificationMethod
ユーザの ID の検証に使用する検証方法。

戻り値

型: void

使用方法

このメソッドを使用して、既存の ID 検証方法の登録を解除します。たとえば、ユーザは電話番号が変更されたときに、電話番号の登録を解除できます。ID 検証方法を登録できるのはエンドユーザのみですが、登録の解除は開発者とユーザが実行できます。カスタム登録ページを実装するときは、この動作に留意してください。

このメソッドは API バージョン 43.0 以降で使用できます。

formatPhoneNumber(countryCode, phoneNumber)

ユーザの携帯電話番号に形式を設定します。ユーザの携帯電話番号を更新する前にこのメソッドをコールすると、電話番号が適切な形式で設定されます。

署名

global static String formatPhoneNumber(String countryCode, String phoneNumber)

パラメータ

countryCode
型: String
有効な国コード。
phoneNumber
型: String
国コードは除いて 3 ~ 49 文字の数値を含む携帯番号。たとえば、(415) 555-1234 など。

戻り値

型: String

ユーザの携帯電話番号を適切な形式で返します。

使用方法

このメソッドを使用して、ユーザの携帯電話番号が Salesforce で要求される形式になるようにします。次に、このメソッドの戻り値を使用して、ユーザのレコードの mobile 項目を更新します。この携帯番号は、SMS ベースの ID 確認に使用されます。たとえば、携帯電話番号は他の ID 検証方法と共に Auth.VerificationMethod 列挙に保存されます。このメソッドは、API バージョン 43.0 で導入されました。以前のバージョンでは使用できません。

ユーザが携帯番号の入力時に使用できる形式を次にいくつか示します。

  • +1, (415) 555-1234 (+ 記号、括弧、ダッシュを含む)
  • 1, 4155551234 (数字のみで記号を含まない)
  • 1 , 415-555-1234 (余分なスペース)

次の例を考えてみます。

  • 正しい例:
    • formatPhoneNumber('1', '4155551234');
    • formatPhoneNumber('+1','(415) 555-1234');
    • formatPhoneNumber('1', '415-555-1234');
  • 国コードと携帯番号が分かれているため、正しくない例:
    • formatPhoneNumber(null, '+1 415-555-1234');
  • エラーは発生しないが、適切に機能しない可能性が高い例:
    • formatPhoneNumber('+1', '+1 (415) 555-1234');

formatPhoneNumber コードの例

formatPhoneNumber メソッドを使用したコードの例を次に示します。ユーザの携帯番号を取得し、それを Salesforce で要求される形式に変換します。次に、書式設定された携帯番号でユーザのレコードを更新します。

1global with sharing class PhoneRegistrationController {
2    //Input variables 
3    global String countryCode {get; set;}
4    global String phoneNumber {get; set;}
5
6    global String addPhoneNumber() 
7    {
8        if(countryCode == null) return 'Country code is required';
9        if(phoneNumber == null) return 'Phone number is required';
10        
11        String userId = UserInfo.getUserId();
12        User u = [SELECT Id FROM User WHERE Id=:userId LIMIT 1];
13        String formatNum = System.UserManagement.formatPhoneNumber(countryCode, phoneNumber);        
14        u.MobilePhone = formatNum;        
15        update u;        
16        return null;        
17    }
18        
19}

国コードと電話番号が分かれていれば、formatPhoneNumber は適切な形式で値を返します。

initPasswordlessLogin(userId, method)

外部ユーザ向けにカスタムの (Visualforce) ログインおよび検証ページを作成する場合に、パスワードなしのログインに対する確認を呼び出します。

署名

public static String initPasswordlessLogin(Id userId, Auth.VerificationMethod method)

パラメータ

userId
型: Id
ログインするユーザの ID。
method
型: Auth.VerificationMethod
ユーザの ID を検証するために使用される方法。EMAIL または SMS。

戻り値

型: String

検証試行の ID。

使用方法

このメソッドと、対応する verifyPasswordlessLogin を一緒に使用することで、独自の Visualforce ログインページおよび検証ページのログイン操作をカスタマイズできます。ユーザがメールアドレスまたは電話番号を入力するログインページから initPasswordlessLogin を呼び出します。

このメソッドの組み合わせの代わりに、Site.passwordlessLogin を使用することもできます。いずれの方法でも、Visualforce のログインページをカスタマイズできます。このメソッドのペアでは、カスタムのログインおよび検証ページを作成できます。Salesforce では、Site.passwordlessLogin によって検証ページが提供されます。

メモ

まず、initPasswordlessLogin メソッドをコールし、認証チャレンジを開始します。このメソッドは次のように動作します。

  • ログインページから EMAIL や SMS などのユーザ ID と検証方法を取得します。
  • ユーザを参照し、そのユーザが一意で有効であることを確認します。
  • ユーザに確認コードを送信します。
  • 検証試行のエントリを ID 検証履歴ログに追加し、検証試行に ID を割り当てて、状況を [ユーザによる確認コードの入力を待機中] に設定します。
  • パスワードなしログインのエントリをログイン履歴ログに追加します。
  • ID を verifyPasswordlessLogin に返して、トランザクションをリンクします。

次に、verifyPasswordlessLogin をコールします。これにより、ユーザが確認コードを正しく入力した場合は、ユーザがログインされます。

ユーザがパスワードなしでログインできるようになるには、事前にメールアドレスまたは電話番号で ID を検証する必要があります。ユーザが検証されたかどうかは、[設定] にあるユーザの詳細ページから確認できます。TwoFactorMethodsInfo を使用して、プログラムで確認することもできます。

メモ

initRegisterVerificationMethod(method)

ID 検証方法をカスタム (Visualforce) ページに登録するための検証を呼び出します。ユーザは、メールアドレスまたは電話番号を登録できます。

署名

public static String initRegisterVerificationMethod(Auth.VerificationMethod method)

パラメータ

method
型: Auth.VerificationMethod
ユーザの ID を検証するために使用される方法。EMAIL または SMS。

戻り値

型: String

このメソッドがエラーメッセージを返すのは、電話番号がすでに登録されている場合、ユーザが外部ユーザでない場合、またはコンテキストがコミュニティでない場合です。

使用方法

このメソッドと、対応する verifyRegisterVerificationMethod を併用すると、Visualforce 検証ページを使用して、ユーザの検証方法の登録プロセスをカスタマイズできます。

最初に initRegisterVerificationMethod メソッドをコールし、ユーザに入力として送信される確認コードを取得して検証します。確認コードが有効でない場合は、エラーメッセージが返されます。

ユーザの電話番号を検証方法として登録するコードの例を次に示します。ユーザが Visualforce ページで確認コードを入力すると、registerUser() が呼び出されます。このメソッドは、検証方法とユーザの電話番号を登録するユーザのユーザ ID を取得します。また、ユーザの登録状況を取得して、電話番号がすでに検証されているかどうかを検査します。ユーザが別の電話番号で登録されている場合は、その電話番号が更新されます。

1public void registerUser() {
2        try {
3            exceptionText='';
4            String userId = UserInfo.getUserId();
5            User u = [Select MobilePhone, Id from User Where Id=:userId];
6             currPhone = u.MobilePhone;
7             mobilePhone = getFormattedSms(mobilePhone)
8           if (mobilePhone != null && mobilePhone != '') {
9           u.MobilePhone = mobilePhone;
10           update u;
11            // We're updating the email and phone number before verifying. Roll back  
12           //  the change in the verify API if it is unsuccessful.
13            exceptionText = System.
14            UserManagement.initRegisterVerificationMethod(Auth.VerificationMethod.SMS);
15            if(exceptionText!= null && exceptionText!=''){
16                isInit = false;
17                showInitException = true;
18            } else {
19                 isInit = false;
20                 isVerify = true;
21            }
22            } else {
23                showInitException = true;
24            }
25        } catch (Exception e) {
26            exceptionText = e.getMessage();
27            isInit = false;
28            showInitException = true;
29        }
30    }
31
32public void verifyUser() {
33    // Take the user’s input for the code sent to their phone number
34    exceptionText = System.UserManagement.
        verifyRegisterVerificationMethod(code, Auth.VerificationMethod.SMS);
35    if(exceptionText != null && exceptionText !=''){
36    showInitException = true;
37    } else {
38            //Success    
39    }
40}

initSelfRegistration(method, user)

コミュニティのセルフ登録用にカスタムの (Visualforce) 検証ページを作成する場合に、セルフ登録に対する検証を呼び出します。

署名

public static String initSelfRegistration(Auth.VerificationMethod method, User user)

パラメータ

method
型: Auth.VerificationMethod
ユーザの ID を検証するために使用される方法。EMAIL または SMS。
user
型: User
登録の成功後に挿入されるユーザオブジェクト。

戻り値

型: String

登録試行の ID。

使用方法

デフォルトでは、ユーザがメールアドレスまたは電話番号でコミュニティにサインアップすると、Salesforce から検証コードが送信されます。同時に、ユーザが ID を確認できる検証ページが生成されます。デフォルトの Salesforce 検証ページを独自の Visualforce ページに置き換えて、検証プロセスを呼び出すことができます。

このメソッドを呼び出すと、認証チャレンジが開始されます。登録が成功した場合は、挿入する User オブジェクトを含めます。このメソッドでは、試行されたセルフ登録の ID が返されます。

次に、verifySelfRegistration をコールします。これにより、ユーザが確認コードを正しく入力した場合は、ユーザがログインされます。

次のコードには、新しいユーザを登録するための検証の結果が含まれています。

1String id = System.UserManagement.initSelfRegistration
2          (Auth.VerificationMethod.SMS, user);
3        Auth.VerificationResult res = System.UserManagement.verifySelfRegistration
4          (Auth.VerificationMethod.SMS, id, ‘123456’, null);
5        if(res.success == true){
6     //redirect
7}

initVerificationMethod(method)

メール、電話 (SMS)、および Salesforce Authenticator 検証方法の検証サービスを開始します。

署名

public static String initVerificationMethod(Auth.VerificationMethod method)

パラメータ

method
型: Auth.VerificationMethod
EMAILSMSSALESFORCE_AUTHENTICATOR などの検証方法の検証サービスを開始するために使用するメソッド。

戻り値

型: String

返される識別子は verifyVerificationMethod に渡される必要があります。

使用方法

このメソッドと、対応する verifyVerificationMethod を一緒に使用することで、EMAILSMSSALESFORCE_AUTHENTICATOR などの検証メソッドの検証サービスをカスタマイズできます。initVerificationMethod から返された識別子は、verifyVerificationMethod に渡す必要があります。

最初に initVerificationMethod メソッドを呼び出して、確認コードをユーザのメールアドレスまたは電話番号に送信するか、プッシュ通知を Salesforce Authenticator に送信します。次に、ユーザは、コードを入力するか、プッシュ通知を承認します。確認コードが有効でない場合、またはプッシュ通知が承認されない場合、エラーメッセージが返されます。

メールの例

この例では、メールを使用した多要素認証の例を示します。

1public void initVerification() {
2// user will receive code on their registered verified email 
3 identifier = UserManagement.initVerificationMethod(Auth.VerificationMethod.EMAIL);
4}
5
6public Auth.VerificationResult verifyVerification() {
7// requiring identifier from the initVerification
8// the code will need to be entered in this method
9return UserManagement.verifyVerificationMethod(identifier, code , Auth.VerificationMethod.EMAIL);
10}

initVerificationMethod(method, actionName, extras)

メール、電話 (SMS)、および Salesforce Authenticator 検証方法の検証サービスを開始します。

署名

public static String initVerificationMethod(Auth.VerificationMethod method, String actionName, Map<String,String> extras)

パラメータ

method
型: Auth.VerificationMethod
EMAILSMSSALESFORCE_AUTHENTICATOR などの検証方法の検証サービスを開始するために使用するメソッド。
actionName
型: String
Connect to My Salesforce Org などの Salesforce Authenticator に表示するアクションの名前 (SALESFORCE_AUTHENTICATOR 検証メソッドの場合のみ)。デフォルトアクション名は Apex-Defined Activity です。
extras
型: Map<String,String>
SALESFORCE_AUTHENTICATOR 検証メソッドの場合のみ、次の追加の設定があります。
  • secure_device_requiredtrue に設定すると、ユーザのデバイスをセキュリティで保護する必要があります。たとえば、ユーザは要求を承認するためにデバイスのパスコードを入力する必要があります。デフォルト設定は false です。
  • challenge_requiredtrue に設定した場合、ユーザは要求を承認するために、デバイスで顔認識などの生体認証の検証を完了する必要があります。デフォルト設定は false です。

戻り値

型: String

返される識別子は verifyVerificationMethod メソッドに渡される必要があります。

使用方法

このメソッドと、対応する verifyVerificationMethod を一緒に使用することで、EMAILSMSSALESFORCE_AUTHENTICATOR などの検証メソッドの検証サービスをカスタマイズできます。initVerificationMethod から返された識別子は、verifyVerificationMethod メソッドに渡す必要があります。

最初に initVerificationMethod メソッドを呼び出して、確認コードをユーザのメールアドレスまたは電話番号に送信するか、プッシュ通知を Salesforce Authenticator に送信します。次に、ユーザは、コードを入力するか、プッシュ通知を承認します。確認コードが有効でない場合、またはプッシュ通知が承認されない場合、エラーメッセージが返されます。

Salesforce Authenticator の例

この例では、Salesforce Authenticator モバイルアプリケーションを使用した多要素認証 (MFA) の例を示します。この例の場合、actionName パラメータはデフォルト設定に設定され、extra パラメータの設定は false に設定されています。

1public void initVerification() {
2// user will receive push notification on their registered MFA devices
3identifier = UserManagement.initVerificationMethod(Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR);
4}
5
6public Auth.VerificationResult verifyVerification() {
7// requiring identifier from the initVerification
8// user will need to take the action on their registered MFA devices
9return UserManagement.verifyVerificationMethod(identifier, '' , Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR);
10}

この例では、Salesforce Authenticator を使用した多要素認証の例を示します。この例の場合、actionName パラメータは Connect to My Salesforce Org に設定され、challenge_required extra パラメータの設定は true に設定されています。

1public void initVerification() {
2Map<String,String> extras = new Map<String,String>();
3extras.put('challenge_required','true');
4// user will receive push notification in their registered MFA devices
5identifier = UserManagement.initVerificationMethod(Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR, 'Connect to My Salesforce Org', extras);
6}
7
8public Auth.VerificationResult verifyVerification() {
9// requiring identifier from the initVerification
10// user will need to take the action on their registered MFA devices
11return UserManagement.verifyVerificationMethod(identifier, '' , Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR);
12}

obfuscateUser(userId, username)

Salesforce で個人データが認識されることをユーザが望まなくなったときに、要求に応じてユーザのデータをスクランブルします。ユーザに対してこのメソッドを呼び出すと、データが匿名になり、そのデータを復元できなくなります。このメソッドを使用して、スクランブル後にユーザ名を特定の値に設定します。

署名

public static void obfuscateUser(Id userId, String username)

パラメータ

userId
型: Id
このメソッドでスクランブルするデータを所有するユーザの ID。
username
型: String
ユーザのデータがスクランブルされた後のユーザ名。スクランブルされたユーザ名の値を特定の文字列に設定します。

戻り値

型: void

使用方法

このメソッドは、API バージョン 43.0 で導入されました。以前のバージョンでは使用できません。

obfuscateUser メソッドを使用して、組織のユーザの個人情報を保護します。呼び出されたときに、ユーザのオブジェクトデータは完全にスクランブルされて、ランダムな文字列に置換されます。ユーザの詳細ページは存在しますが、項目には意味のない文字列が含まれます。Salesforce でユーザを削除することはできず、無効化のみが可能なため、個人データは単に難読化 (スクランブル) されます。つまり、ユーザレコードはデータベースに残され、このメソッドは論理削除を実行します。

このメソッドを使用する場合は注意が必要です。ユーザのデータは匿名となり、復元できません。

メモ

考慮事項

  • このメソッドでは、[設定] の組織のユーザ管理設定 [特定のユーザのデータをスクランブル] が有効になっている必要があります。
  • このメソッドはユーザオブジェクトの標準項目に影響します (ユーザ ID、タイムゾーン、ロケール、プロファイルなどの一部の項目を除く)。
  • ユーザに確認を送信する場合、ユーザの ID と後処理のための他の属性 (メールアドレスなど) を書き留めることをお勧めします。
  • このメソッドはユーザオブジェクトのみを変更します。ユーザと他のオブジェクト間の関連付けは削除されますが、他のオブジェクトは変更されません。たとえば、連絡先、ThirdPartyAccountLink (TPAL)、ユーザパスワード認証 (UPA) オブジェクトは変更されずに維持されます。

このメソッドを使用しても、メール変更通知はトリガされないことをシステム管理者に伝えてください。

メモ

このメソッドは、ユーザの個人データとプライバシー保護の取り組みの一環です。ユーザデータを積極的に保護するために実行できることについての詳細は、Salesforce ヘルプの「データ保護とプライバシー」を参照してください。

obfuscateUser(userId)

Salesforce で個人データが認識されることをユーザが望まなくなったときに、要求に応じてユーザのデータをスクランブルします。ユーザに対してこのメソッドを呼び出すと、データが匿名になり、そのデータを復元できなくなります。

署名

public static void obfuscateUser(Id userId)

パラメータ

userId
型: Id
このメソッドでスクランブルするデータを所有するユーザの ID。

戻り値

型: void

使用方法

このメソッドは、API バージョン 43.0 で導入されました。以前のバージョンでは使用できません。

obfuscateUser メソッドを使用して、組織のユーザの個人情報を保護します。呼び出されたときに、ユーザのオブジェクトデータは完全にスクランブルされて、ランダムな文字列に置換されます。ユーザの詳細ページは存在しますが、項目には意味のない文字列が含まれます。Salesforce でユーザを削除することはできず、無効化のみが可能なため、個人データは単に難読化 (スクランブル) されます。つまり、ユーザレコードはデータベースに残され、このメソッドは論理削除を実行します。

このメソッドを使用する場合は注意が必要です。ユーザのデータは匿名となり、復元できません。

メモ

考慮事項

  • このメソッドでは、[設定] の組織のユーザ管理設定 [特定のユーザのデータをスクランブル] が有効になっている必要があります。
  • このメソッドはユーザオブジェクトの標準項目に影響します (ユーザ ID、タイムゾーン、ロケール、プロファイルなどの一部の項目を除く)。
  • ユーザに確認を送信する場合、ユーザの ID と後処理のための他の属性 (メールアドレスなど) を書き留めることをお勧めします。
  • このメソッドはユーザオブジェクトのみを変更します。ユーザと他のオブジェクト間の関連付けは削除されますが、他のオブジェクトは変更されません。たとえば、連絡先、ThirdPartyAccountLink (TPAL)、ユーザパスワード認証 (UPA) オブジェクトは変更されずに維持されます。

このメソッドを使用しても、メール変更通知はトリガされないことをシステム管理者に伝えてください。

メモ

このメソッドは、ユーザの個人データとプライバシー保護の取り組みの一環です。ユーザデータを積極的に保護するために実行できることについての詳細は、Salesforce ヘルプの「データ保護とプライバシー」を参照してください。

ObfuscateUser コード例

1public class UserManagementController{
2    public List <User> users {getset;}
3    
4    public UserManagementController()
5    {
6        Profile p = [select id from profile where name = 'Customer Community User'];
7        
8        users = [select usernameid from User where profileId=:p.id AND isactive=true];
9    }
10
11    //Use method with extreme caution. Data can't be recovered.   
12    @InvocableMethod(label='User Management' description='Obfuscate User data and more')
13    static public void obfuscate(List<User> users)
14    {
15        String uid = ApexPages.currentPage().getParameters().get('uid');
16        
17        if(uid == null)
18            return;
19        
20        User u = [select contactId from user where id=:uid];
21            
22        System.UserManagement.obfuscateUser(uid);
23        
24        if(u.contactId != null)
25        {
26            List <Contact> contacts = [select id from Contact where id=:u.contactId LIMIT 1];
27            if (contacts == null || contacts.isEmpty() == true)
28            return;
29                
30            delete contacts;
31        }
32    }
33}

registerVerificationMethod(method, startUrl)

ID 検証方法を登録します。検証方法として登録できるのは、時間ベースのワンタイムパスワード (TOTP)、メールまたはテキストの確認コード、Salesforce Authenticator、U2F 準拠のセキュリティキーです。エンドユーザ自身が検証方法を登録します。

署名

public static System.PageReference registerVerificationMethod(Auth.VerificationMethod method, String startUrl)

パラメータ

method
型: Auth.VerificationMethod
ユーザの ID の検証に使用する検証方法。
startUrl
型: String
ログイン後にユーザに表示するページへのパス。

戻り値

型: System.PageReference

使用方法

このメソッドを使用して、多要素認証 (MFA) などの ID 検証を完了するか、パスワードなしでコミュニティにログインします。ユーザは、ログイン時に自分の ID を検証するためにこれらのメソッドを登録します。モバイル重視のパスワードなしのログインを実装するときは、カスタム登録ページを作成します。「VerifyPasswordlessLogin」を参照してください。

registerVerificationMethod で返された PageReference は、ユーザを Salesforce の検証ページにリダイレクトします。ユーザが正しいコードを入力すると、開始 URL で指定されたコミュニティページにリダイレクトされます。次に例を示します。

1PageReference pr = System.UserManagement.registerVerificationMethod(Auth.VerificationMethod.TOTP,startUrl);
2PageReference p =  System.UserManagement.deregisterVerificationMethod(userId,Auth.VerificationMethod.SALESFORCE_AUTHENTICATOR);

このメソッドは API バージョン 43.0 以降で使用できます。

ユーザが詳細ページで携帯番号を追加または更新した場合、セキュリティ対策として、ユーザは再度ログインして ID を検証する必要があります。その結果、アプリケーションに保存されていない変更は失われます。このセキュリティ対策を無効にするには、Salesforce サポートにお問い合わせください。

メモ

sendAsyncEmailConfirmation(userId, emailTemplateId, networkId, startUrl)

ユーザのメールアドレスに検証用のメールメッセージを送信します。このメッセージには、ユーザが後でメールアドレスを検証するためにクリックする検証リンク (URL) が含まれます。メール検証を一括で送信できます。

署名

public static Boolean sendAsyncEmailConfirmation(String userId, String emailTemplateId, String networkId, String startUrl)

パラメータ

userId
型: String
確認メールを受信するユーザの ID。
emailTemplateId
型: String
検証リンクが定義されているメールテンプレートの ID。
networkId
型: String
コミュニティの ID。
startUrl
型: String
ユーザは検証後にこのページにリダイレクトされ、パラメータとして成功メッセージまたはエラーメッセージが渡されます。null の場合、ユーザはログインページにリダイレクトされます。

戻り値

型: Boolean

メールメッセージの送信が成功したか失敗したかを示します。

使用方法

非同期メールメッセージを送信すると、ユーザが所有する有効なメールアドレスで登録されていることを確認できるため、お勧めします。検証リンクが記載されたメールの受信者を特定するには、ユーザの詳細ページで [ユーザの検証済みメール] 項目が true に設定されているかどうかを確認します。この情報は、TwoFactorMethodsInfo API からも得られます。

外部ユーザに非同期メール検証を送信して、ユーザのメールアドレスを検証します。外部ユーザはメールの OTP (パスワードなしのログイン) でログインする前にメールアドレスを検証する必要があります。

エラーコードと説明はクエリパラメータとして渡されるため、カスタムランディングページを作成するときにエラーを処理できます。

1System.UserManagement.sendAsyncEmailConfirmation('005RM000001a0Ox', 
2'00XRM000000hxnG','0DBRM000000015i', '/s/contactsupport');

verifyPasswordlessLogin(userId, method, identifier, code, startUrl)

カスタム検証ページを使用するパスワードなしのログイン中に検証を実行します (Visualforce のみ)。ログインしようとしているユーザが正常に確認コードを入力すると、そのユーザはログインされます。

署名

public static Auth.VerificationResult verifyPasswordlessLogin(Id userId, Auth.VerificationMethod method, String identifier, String code, String startUrl)

パラメータ

userId
型: Id
ログインするユーザの ID。
method
型: Auth.VerificationMethod
ユーザの ID ���検証するために使用される方法。EMAIL または SMS。
identifier
型: String
initPasswordlessLogin メソッドから受信した検証試行の ID。
code
型: String
ユーザの ID の検証に使用するコード。
startUrl
型: String
ログインに成功した後にユーザが移動するページ。

戻り値

型: Auth.VerificationResult

検証の結果。表示されたメッセージと、ユーザが確認コードを正しく入力したときのユーザの移動先が含まれています。

使用方法

このメソッドをコールし、パスワードなしログイン認証プロセスを開始します。検証方法と検証コードが確認されます。また、ID が initPasswordlessLogin によって返されるものと同じであることが確認されます。

Auth.VerificationResult の例を参照してください。

verifyRegisterVerificationMethod(code, method)

ID 検証プロセスをカスタマイズするときの検証方法として、ユーザのメールアドレスまたは電話番号の登録を完了します。

署名

public static String verifyRegisterVerificationMethod(String code, Auth.VerificationMethod method)

パラメータ

code
型: String
ユーザの ID の検証に使用するコード。
method
型: Auth.VerificationMethod
ユーザの ID を検証するために使用される方法。EMAIL または SMS。

戻り値

型: String

ユーザが入力した確認コードが正しくない場合は、メソッドからエラーメッセージが返されます。

使用方法

verifyRegisterVerificationMethod をコールすると、ユーザの検証方法を登録するプロセスが実行されます。このメソッドは、ユーザが正しい確認コードを入力したかどうかを検査します。確認コードが正しければ、メソッドは次を実行します。
  • ユーザが正しい確認コードを入力したことを確認します。
  • ユーザの詳細ページから、ユーザの検証方法の状況を更新します (検証ビットを設定します)。
  • 検証方法がレコードに追加されていることを確認するメールをユーザに送信します。

確認コードが正しくない場合は、エラーメッセージが返されます。

ユーザがメールアドレスを登録後に変更する場合、initRegisterVerificationMethod メソッドと verify RegisterVerificationMethod メソッドは使用しないでください。[ID 検証] 設定ページから、メールアドレスを変更した場合の自動 ID 検証を有効にするには、項目 [メールアドレスの変更に対してメール確認が必要 (Lightning コミュニティの外部ユーザに適用)] を選択します。

メモ

ユーザの電話番号を検証方法として登録するコードの例を次に示します。ユーザが Visualforce ページで確認コードを入力すると、registerUser() が呼び出されます。このメソッドは、検証方法とユーザの電話番号を登録するユーザのユーザ ID を取得します。また、ユーザの登録状況を取得して、電話番号がすでに検証されているかどうかを検査します。ユーザが別の電話番号で登録されている場合は、その電話番号が更新されます。

1public void registerUser() {
2        try {
3            exceptionText='';
4            String userId = UserInfo.getUserId();
5            User u = [Select MobilePhone, Id from User Where Id=:userId];
6             currPhone = u.MobilePhone;
7             mobilePhone = getFormattedSms(mobilePhone)
8           if (mobilePhone != null && mobilePhone != '') {
9           u.MobilePhone = mobilePhone;
10           update u;
11            // We're updating the email and phone number before verifying. Roll back  
12           //  the change in the verify API if it is unsuccessful.
13            exceptionText = System.
14            UserManagement.initRegisterVerificationMethod(Auth.VerificationMethod.SMS);
15            if(exceptionText!= null && exceptionText!=''){
16                isInit = false;
17                showInitException = true;
18            } else {
19                 isInit = false;
20                 isVerify = true;
21            }
22            } else {
23                showInitException = true;
24            }
25        } catch (Exception e) {
26            exceptionText = e.getMessage();
27            isInit = false;
28            showInitException = true;
29        }
30    }
31
32public void verifyUser() {
33    // Take the user’s input for the code sent to their phone number
34    exceptionText = System.UserManagement.
        verifyRegisterVerificationMethod(code, Auth.VerificationMethod.SMS);
35    if(exceptionText != null && exceptionText !=''){
36    showInitException = true;
37    } else {
38            //Success    
39    }
40}

verifySelfRegistration(method, identifier, code, startUrl)

コミュニティのセルフ登録用にカスタムの (Visualforce) 検証ページを作成する場合に、検証を実行します。登録を行っている人が検証コードを正常に入力すると、ユーザが作成されてログインされます。

署名

public static Auth.VerificationResult verifySelfRegistration(Auth.VerificationMethod method, String identifier, String code, String startUrl)

パラメータ

method
型: Auth.VerificationMethod
ユーザの ID を検証するために使用される方法。EMAIL または SMS。
identifier
型: String
initSelfRegistration メソッドから受信した一意の識別子。
code
型: String
ユーザの ID の検証に使用するコード。
startUrl
型: String
セルフ登録が成功した後にユーザが移動するページ。

戻り値

型: Auth.VerificationResult

検証の結果。これには表示されたメッセージと、ユーザが確認コードを正しく入力したときのユーザの移動先が含まれています。

使用方法

デフォルトでは、ユーザがメールアドレスまたは電話番号でコミュニティにサインアップすると、Salesforce から検証コードが送信され、検証ページが生成されます。この検証ページでは、ユーザが自分の身元を確認するための確認コードを入力します。Salesforce で生成された検証ページは、Visualforce で作成したカスタム検証ページと置き換えることができます。そして、Apex メソッドを使用して検証プロセスを呼び出します。

まず、initSelfRegistration メソッドを呼び出します。このメソッドは、作成するユーザの ID を返します。次に、この verifySelfRegistration メソッドをコールして検証プロセスを完了します。ユーザが確認コードを正しく入力すると、ユーザが作成され、startURL で指定されたページに転送されます。

このメソッドは、確認状況を含んだ検証結果を返します。さらに、ユーザが作成された場合は、セッション ID を返します。検証方法が SMS の場合、ユーザオブジェクトには適切な形式の携帯番号 (国コード、スペース、電話番号の順、例: +1 1234567890) が含まれている必要があります。電話番号を正しく書式設定するには、System.UserManagement.formatPhoneNumber を使用します。

次のコードには、新しいユーザを登録するための検証の結果が含まれています。

1String id = System.UserManagement.initSelfRegistration
2          (Auth.VerificationMethod.SMS, user);
3        Auth.VerificationResult res = System.UserManagement.verifySelfRegistration
4          (Auth.VerificationMethod.SMS, id, ‘123456’, null);
5        if(res.success == true){
6     //redirect
7}

verifyVerificationMethod(identifier, code, method)

メール、電話 (SMS)、Salesforce Authenticator パスワード、時間ベースのワンタイムパスワード (TOTP) 検証方法の検証サービスを完了します。

署名

public static String verifyVerificationMethod(String identifier, String code, Auth.VerificationMethod method)

パラメータ

identifier
型: String
initVerificationMethod から返された EMAILSMS、および SALESFORCE_AUTHENTICATOR の識別子。
code
型: String
EMAILSMS、または PASSWORD について、ユーザの ID を検証するために使用されるコード。
method
型: Auth.VerificationMethod
ユーザの ID を検証するために使用される方法。EMAILPASSWORDSALESFORCE_AUTHENTICATORSMS または TOTP が有効になります。

戻り値

型: VerificationResult

使用方法

このメソッドと、対応する initVerificationMethod を一緒に使用することで、EMAILSMSSALESFORCE_AUTHENTICATOR などの検証メソッドの検証サービスをカスタマイズできます。また、このメソッドを単独で使用することで、PASSWORDTOTP の検証方法の完全な検証サービスを提供できます。

このメソッドは、ユーザが正しい確認コードまたはパスワードを入力したかどうかを検査します。確認コードまたはパスワードが正しい場合、このメソッドはユーザの ID を検証します。

確認コードまたはパスワードが有効ではない場合、エラーメッセージが返されます。

この例では、メールを使用した多要素認証の例を示します。

1public void initVerification() {
2// user will receive code on their registered verified email 
3 identifier = UserManagement.initVerificationMethod(Auth.VerificationMethod.EMAIL);
4}
5
6public Auth.VerificationResult verifyVerification() {
7// requiring identifier from the initVerification
8// the code will need to be entered in this method
9return UserManagement.verifyVerificationMethod(identifier, code , Auth.VerificationMethod.EMAIL);
10}

次の 2 つの例は、パスワードと TOTP 検証に verifyVerificationMethod のみを使用した多要素認証を示しています。

1public Auth.VerificationResult verifyVerification() {
2// user will enter their password as a param in the verifyVerificationMethod for password verification method
3return UserManagement.verifyVerificationMethod('', password , Auth.VerificationMethod.PASSWORD);
4}
1public Auth.VerificationResult verifyVerification() {
2// user will enter their registered time-based one-time password (TOTP) code (token)
3return UserManagement.verifyVerificationMethod('', code , Auth.VerificationMethod.TOTP);
4}