この記事の目次
SalesforceのsetPasswordとは?

SalesforceのsetPasswordについての概要

SetPasswordResult setPasswordResult = connection.setPassword(ID userID, string password);
ユーザーやセルフサービスユーザーのパスワード設定にsetPassword()を使用してパスワードを変更する方法です。例えば、クライアントとなるアプリケーションが、各ユーザーのパスワードを指定してもらいます。
システム管理者がユーザーパスワード変更のためにsetPassword()を使用するのです。
Javaを使用したサンプルコード
以下が、Javaを使用したサンプルコードです。ユーザーIDをパスワードパラメータで受け取って、指定のユーザーパスワードをsetPassword()で設定したサンプルです。public void doSetPassword(String userId, String newPasswd) {
try {
SetPasswordResult result = connection.setPassword(userId, newPasswd);
System.out.println("The password for user ID " + userId + " changed to "
+ newPasswd);
} catch (ConnectionException ce) {
ce.printStackTrace();
}
}
C#を使用したサンプルコード
C#を使用したサンプルコードになります。ユーザーIDをパスワードパラメータで受け取って、指定のユーザーパスワードをsetPassword()で設定したサンプルです。public void doSetPassword(String userId, String newPasswd)
{
try
{
SetPasswordResult result = binding.setPassword(userId, newPasswd);
Console.WriteLine("The password for user ID " + userId + " changed to "
+ newPasswd);
}
catch (SoapException e)
{
Console.WriteLine("An unexpected error has occurred: " +
e.Message + "\n" + e.StackTrace);
}
}
SalesforceのsetPasswordの注意点

setPasswordが使えないユーザーについて
SalesforceのsetPassword()は基本的にApexクラスを使用して変更処理を行います。SalesforceのsetPassword()は、ユーザーIDと新しく設定したいパスワードを引数として渡します。 しかし、setPassword()を使用できないユーザーもいるのです。setPassword()の基本的な構文は以下になります。System.setPassword(UserInfo.getUserId(), newPassword);
例えば、社内のユーザーやカスタマーユーザーはエラーが起きず、問題ないく変更ができたとしましょう。しかし、コミュニティユーザーはパスワードの変更ができないとします。
原因としては、サイトユーザーと同じとシステムに見なされていたなどほかのユーザーと同一視されてしまう場合があります。構文があっている場合は、他の視点で原因を探るといいでしょう。
ユーザーに仮パスワードを設定
SalesforceのsetPasswordでユーザーに一括で仮パスワードを設定する方法と注意点について説明します。 パスワードリセットを行う際にユーザーにメールを送れない、ログイン可能なIPとメールのネットワーク範囲が異なる、同じ仮パスワードを一括で設定したいなど理由はさまざまです。ユーザーパスワードを設定する場合は、開発者コンソールから設定します。 開発者コンソールから「デバッグ」、「Open Execute Anonymous Window」で匿名性のApexを設定しましょう。一括で行う場合は下記サンプルを参考にしましょう。List users = [SELECT Id, Username
FROM User
WHERE isActive = true
ORDER BY Username
];
for(User u : users){
System.setPassword(u.Id, 'Salesforce0000');
}
一括で仮パスワードを設定する注意点
一括で仮パスワードをユーザーに設定したい場合は、いくつか注意点があります。まず、setPassword()を使用して一括でユーザーに仮パスワードを設定するには、人数に制限があります。 アクティブユーザーが151人以上いる場合、ガバナ制限に引っ掛かり、エラーが発生するのです。エラーは「System.LimitException: Too many DML statements: 151」です。 理由としては、パスワードを設定のために各呼び出しで1つのDMLステートメントとされるため、150人より多い人数では、機能ができないためエラーが起こります。また、setPassword()の一括で行うパスワードの変更にはガバナ制限にも気を付ける必要があります。 パスワードを変更したくないユーザーまでパスワードを変更してしまう場合があるのです。失敗しないよう、注意して行うようにしましょう。SalesforceのsetPasswordを活用しよう
