login()
構文
1LoginResult = connection.login(string username, string password);使用方法
login() コールを使用して、ログインサーバにログインし、クライアントセッションを開始します。クライアントアプリケーションは、他の API コールを行う前に、ログインし、sessionId とサーバ URL を取得します。
クライアントアプリケーションは、login() コールを呼び出すとき、ログイン情報としてユーザ名とパスワードを渡します。呼び出し時に、API がログイン情報を認証します。後続のすべての API コールで使用する、sessionId、ログインユーザ名に関連付けられているユーザ ID、および Lightning プラットフォーム API を指す URL を返します。
Salesforce は、クライアントアプリケーションがログインしている IP アドレスを確認し、不明な IP アドレスからのログインをブロックします。API でブロックされたログインに関しては、Salesforce がログイン失敗エラーを返します。ログインするには、ユーザがセキュリティトークンをユーザパスワードの末尾に追加する必要があります。たとえば、パスワードが mypassword で、セキュリティトークンが XXXXXXXXXX の場合は、「mypasswordXXXXXXXXXX」と入力する必要があります。セキュリティトークンを取得するには、Salesforce ユーザインターフェースからパスワードを変更するか、セキュリティトークンをリセットします。ユーザがパスワードを変更するか、セキュリティトークンをリセットすると、ユーザの Salesforce レコードに指定されたメールアドレス宛に新しいセキュリティトークンが送信されます。セキュリティトークンは、ユーザがセキュリティトークンをリセットするか、パスワードを変更するか、またはユーザのパスワードがリセットされるまで有効です。トークンが無効な場合、ユーザはログインプロセスを再度行う必要があります。再度ログインを行わないようにするには、クライアントの IP アドレスを組織の信頼できる IP アドレスのリストに追加します。詳細は、「セキュリティトークン」を参照してください。
ログイン後、クライアントアプリケーションで次のタスクが実行されていることを確認します。
- API がこのセッションに対する後続要求を検証できるように、SOAP ヘッダー内にセッション ID を設定する。
- 後続サービス要求の要求先としてサーバ URL を指定する。ログインサーバでは、ログインコールしかサポートされま��ん。
開発ツールごとに、セッションヘッダーとサーバ URL の指定方法は異なります。詳細は、使用している開発ツールのマニュアルを参照してください。
login() は、1 時間につき 1 ユーザあたり最大 3,600 コールに制限されています。この制限を超えると、「Login Rate Exceeded」 (ログイン数の制限を超えました。) エラーが表示されます。1 時間の上限を超えると、Salesforce によりユーザのログインがブロックされます。ユーザはブロックされてから 1 時間後、もう一度ログインを試行できます。
Enterprise と Partner エンドポイント
バージョン 11.1 以前の API では、Partner WSDL で構築されたクライアントアプリケーションは Enterprise エンドポイントに要求を送信可能で、Enterprise WSDL で構築されたアプリケーションは Partner エンドポイントに要求を送信可能です。バージョン 12.0 以降では、この機能はサポートされていません。
Sandbox エンドポイント
Sandbox 組織でログインする場合は、login.salesforce.com ではなく test.salesforce.com に基づくエンドポイントを使用してください。
プロキシを使用したログイン
プロキシ経由で Salesforce にログインする場合は、ログインに使用する ConnectorConfig クラスのインスタンスでプロキシホストおよびポート番号を設定します。プロキシを認証する必要がある場合は、ユーザ名およびパスワードを設定します。
1ConnectorConfig config = new ConnectorConfig();
2config.setUsername(userId);
3config.setPassword(passwd);
4config.setAuthEndpoint(authEndPoint);
5config.setProxy(proxyHost, proxyPort);
6// Set the username and password if your proxy must be authenticated
7config.setProxyUsername(proxyUsername);
8config.setProxyPassword(proxyPassword);
9try {
10 EnterpriseConnection connection = new EnterpriseConnection(config);
11 // etc.
12} catch (ConnectionException ce) {
13 ce.printStackTrace();
14}セッション終了
クライアントアプリケーションは、セッションを終えるために明示的にログアウトする必要はありません。セッションは、前もって決定された非活動状態の期間の後、自動的に終了します。デフォルト値は 2 時間です。API コールを行うと、非活動状態タイマーがゼロにリセットされます。セッションの有効期限 (タイムアウト) の値を変更するには、[設定] から、[クイック検索] ボックスに「セッションの設定」と入力し、[セッションの設定] を選択します。
有効なセルフサービスユーザの認証
アクティブセルフサービスユーザを認証するには、セルフサービスがユーザの認証に対して LoginScopeHeader を使用して、Organization ID を指定します。認証の前提として、セルフサービスユーザが存在しており、かつ有効である必要があります (「SelfServiceUser」参照)。
Customer Community ユーザの認証
[API の有効化] 権限を持つ有効なコミュニティユーザを認証するには、LoginScopeHeader を使用して、コミュニティを含む組織の Organization ID を指定します。コミュニティユーザは、有効で、認証される前にコミュニティに属している必要があります。
クライアントアプリケーションでは、ログイン要求を次のエンドポイントに送信できます (この際に、認証エンドポイントの有効な値を使用します)。
- String authEndPoint = "https://login.salesforce.com/services/Soap/c/version/"
- String authEndPoint = "https://community-domain/path-prefix/Soap/c/version/"
- String authEndPoint = "https://login.salesforce.com/services/Soap/u/version/"
- String authEndPoint = "https://community-domain/path-prefix/Soap/u/version/"
ログアウト
Salesforce では、不要になったセッションを終了するために、必ず logout() をコールすることをお勧めします。このコールは、子セッションも終了させます。ほとんどの保護が行われるようにするには、セッションが期限切れになるのを待つのではなく、ユーザをログアウトします。
サンプルコード —Java
このサンプルでは、指定されたユーザ名、パスワード、および認証エンドポイント URL を使用してユーザをログインします。このサンプルでは、ログインの成功後、ユーザ情報とセッション情報をコンソールに書き込みます。このサンプルを実行する前に、ユーザ名、パスワード、認証エンドポイントの値を有効な値に置き換えてください。
API コールを作成するために必要な Web サービス WSDL を生成してインポートする方法については、「クイックスタート」の「ステップ 2: Web サービス WSDL を生成または取得する」を参照してください。
1public boolean loginSample() {
2 boolean success = false;
3 String username = "username";
4 String password = "password";
5 String authEndPoint = "https://login.salesforce.com/services/Soap/c/24.0/";
6
7 try {
8 ConnectorConfig config = new ConnectorConfig();
9 config.setUsername(username);
10 config.setPassword(password);
11
12 System.out.println("AuthEndPoint: " + authEndPoint);
13 config.setAuthEndpoint(authEndPoint);
14
15 connection = new EnterpriseConnection(config);
16
17 // Print user and session info
18 GetUserInfoResult userInfo = connection.getUserInfo();
19 System.out.println("UserID: " + userInfo.getUserId());
20 System.out.println("User Full Name: " + userInfo.getUserFullName());
21 System.out.println("User Email: " + userInfo.getUserEmail());
22 System.out.println();
23 System.out.println("SessionID: " + config.getSessionId());
24 System.out.println("Auth End Point: " + config.getAuthEndpoint());
25 System.out
26 .println("Service End Point: " + config.getServiceEndpoint());
27 System.out.println();
28
29 success = true;
30 } catch (ConnectionException ce) {
31 ce.printStackTrace();
32 }
33
34 return success;
35}サンプルコード —C#
このサンプルでは、指定されたユーザ名、パスワードを使用してユーザをログインします。login コールの結果には、サービスエンドポイント URL が含まれます。この URL は、組織にサービスしている仮想サーバインスタンスであり、一意のセッション ID です。このサンプルでは、バインドにこれらの返された値を設定します。バインド URL に返されたサービスエンドポイントを設定します。また、すべての API コールで使用されているセッションヘッダーのセッション ID を設定します。次に、ログインの成功後、ユーザ情報とセッション情報をコンソールに書き込みます。このサンプルを実行する前に、ユーザ名とパスワードの値を有効な値に置き換えてください。
API コールを作成するために必要な Web サービス WSDL を生成してインポートする方法については、「クイックスタート」の「ステップ 2: Web サービス WSDL を生成または取得する」を参照してください。
1public bool loginSample()
2{
3 Boolean success = false;
4 string username = "username";
5 string password = "password";
6
7 // Create a service object
8 binding = new SforceService();
9
10 LoginResult lr;
11 try
12 {
13 Console.WriteLine("\nLogging in...\n");
14 lr = binding.login(username, password);
15
16 /**
17 * The login results contain the endpoint of the virtual server instance
18 * that is servicing your org. Set the URL of the binding
19 * to this endpoint.
20 */
21 // Save old authentication end point URL
22 String authEndPoint = binding.Url;
23 // Set returned service endpoint URL
24 binding.Url = lr.serverUrl;
25
26 /** Get the session ID from the login result and set it for the
27 * session header that will be used for all subsequent calls.
28 */
29 binding.SessionHeaderValue = new SessionHeader();
30 binding.SessionHeaderValue.sessionId = lr.sessionId;
31
32 // Print user and session info
33 GetUserInfoResult userInfo = lr.userInfo;
34 Console.WriteLine("UserID: " + userInfo.userId);
35 Console.WriteLine("User Full Name: " +
36 userInfo.userFullName);
37 Console.WriteLine("User Email: " +
38 userInfo.userEmail);
39 Console.WriteLine();
40 Console.WriteLine("SessionID: " +
41 lr.sessionId);
42 Console.WriteLine("Auth End Point: " +
43 authEndPoint);
44 Console.WriteLine("Service End Point: " +
45 lr.serverUrl);
46 Console.WriteLine();
47
48 // Return true to indicate that we are logged in, pointed
49 // at the right URL and have our security token in place.
50 success = true;
51 }
52 catch (SoapException e)
53 {
54 Console.WriteLine("An unexpected error has occurred: " +
55 e.Message + "\n" + e.StackTrace);
56 }
57 return success;
58}