[Force.comでWeb制作]カスタマーポータルのユーザアカウントにパスワードを事前設定

By |11月 15, 2009|Force.comでWeb制作, |


カスタマーポータルのユーザアカウントを作るときに、以下のような画面からユーザアカウントを作成すると、ユーザ宛にメールが送信されます。

ステップ1:取引先責任者画面でのカスタマーポータル有効化
cp11

ステップ2:有効にしたカスタマーポータルユーザの設定とメール送信
ws000099

そのメール内にはアカウント作成時に自動生成されたパスワードが記載されています。
cp2

このパスワードは自動生成されるものであり、管理者側でカスタマーポータルユーザ作成時に指定して入力することはできません。メールに届いたパスワードをユーザが入力して、もし変更したい場合はそのユーザが自分で変更する必要があります。

このユーザアカウントの作成手順において、リテラシーの低いユーザやパスワードを設定するという手順そのものがわからないユーザが多い場合、または数千数万の大規模ユーザを対象にユーザアカウントを発行する場合には、個々人にパスワード設定をさせるという手順が混乱を招いてしまう場合があります。

そんな時のために、全ユーザアカウントのパスワードを事前設定する方法があります。ユーザには管理者側で事前設定したパスワードを伝えるだけ。こんなマニアックなケースに一生に何回遭遇するのかわかりませんが、そんな方法のご紹介。

カスタマーポータルユーザのパスワードを事前設定するには

WebサービスAPI経由でsetpassword()というメソッドを使うことで、ユーザパスワードを設定することが可能です。まず最初にデータローダか何かでCSV経由で一括でカスタマーポータルユーザアカウントを流し込んでおいて、その流し込んだ全ユーザアカウントに対してWebサービスAPI経由でsetpassword()を実行することで大量のカスタマーポータルユーザのパスワードの事前設定が可能です。そこで設定したパスワードは別途リストに管理しておけば、Force.comで自動生成されたパスワードではなく管理者側で設定したパスワードをユーザと共有することが可能になります。

参考:setPassword()

サンプル

WebサービスAPIリファレンスのsetPassword()のページにJavaとC#のサンプルがありますのでご参考に。

JAVA

[java]
public void setPasswordSample() {
// Specify the userID and new password
ID idToReset = new ID("005x0000000fFLnAAM");
String newPassword = "password";
try {
// Invoke the setPassword call
SetPasswordResult setPasswordResult = binding.setPassword(idToReset, newPassword);
// If the call fails, an exception is raised; otherwise, the return is empty.
} catch (Exception ex) {
System.out.println("An unexpected error has occurred." + ex.getMessage());
}
}
[/java]

C#

[c]
private void setPassword()
{
//Invoke setPassword call; returns nothing if successful
binding.setPassword("userid", "newpassword");
}

[/c]

うちでもPHPのサンプルを書いてみましたのでご参考までに。CSVファイルからパスワードファイルを読み込む前提の内容です。

[php]
function set_sf_new_password () {
$mySforceConnection = $this->connect_salesforce();

$csv_file = file_get_contents (‘../var/upload/password_set.csv’);
$delimiter = "\n";
$csv_record = explode ($delimiter, $csv_file);
foreach ($csv_record as $value) {
$record = explode(",", $value);
$user_name = $record[0];
$new_password = $record[1];

$query = "SELECT Id, Name from User where Username = ‘$user_name’";
$response = $mySforceConnection->query(($query));

foreach ($response->records as $record) {
$user_id = $record->Id;
$mySforceConnection->setPassword($user_id, $new_password);
}
}
}
[/php]