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

login()

ログインサーバにログインし、クライアントセッションを開始します。

構文

1LoginResult = connection.login(string username, string password);

使用方法

login() コールを使用して、ログインサーバにログインし、クライアントセッションを開始します。クライアントアプリケーションは、他の API コールを行う前に、ログインし、sessionId とサーバ URL を取得しておく必要があります。

クライアントアプリケーションは、login() コールを呼び出すとき、ユーザ認証情報としてユーザ名とパスワードを渡します。呼び出し時に、API が認証を行い、後続のすべての API で使用する、セッションの sessionId、ログインユーザ名に関連付けられているユーザ ID、および Force.com API を指す URL を返します。

Salesforce は、クライアントアプリケーションがログインしている IP アドレスを確認し、不明な IP アドレスからのログインをブロックします。API 経由でブロックされたログインに関しては、Salesforce がログイン失敗エラーを返します。この場合、ユーザはログインパスワードにセキュリティトークンを追加する必要があります。セキュリティトークンは Salesforce から自動生成されるキーです。たとえば、パスワードが mypassword で、セキュリティトークンが XXXXXXXXXX の場合は、ログイン時に「mypasswordXXXXXXXXXX」と入力する必要があります。セキュリティトークンを取得するには、Salesforce ユーザインターフェースを通じてパスワードを変更するか、セキュリティトークンをリセットします。ユーザがパスワードを変更するか、セキュリティトークンをリセットすると、ユーザの Salesforce レコードに指定されたメールアドレス宛に新しいセキュリティトークンが送信されます。セキュリティトークンは、ユーザがセキュリティトークンをリセットするか、パスワードを変更するか、またはパスワードをリセットするまで有効です。セキュリティトークンが無効である場合、ユーザはログインプロセスを繰り返さなければなりません。このような事態を発生させないために、管理者は組織の所有する信頼できる IP アドレスの一覧にクライアントの IP アドレスが追加されていることを確認しなければなりません。詳細は、セキュリティトークンを参照してください。

ログイン後、クライアントアプリケーションは、次のタスクを実行する必要があります。

  • API がこのセッションに対する後続要求を検証できるように、SOAP ヘッダー内にセッション ID を設定する。
  • 後続サービス要求の要求先としてサーバ URL を指定する。ログインサーバはログインコールしかサポートしないため、サーバ URL を変更する必要があります。

開発ツールごとに、セッションヘッダーとサーバ URL の指定方法は異なります。詳細は、使用している開発ツールのマニュアルを参照してください。

複数のクライアントアプリケーションが、同じ username 引数を使用してログインできます。ただし、クエリ制限によってエラーになるリスクが高くなります。ユーザは一度に最大 10 個のクエリカーソルを開くことができます。同じユーザとしてログインしているクライアントアプリケーションが、新しい QueryLocator カーソルを開こうとしたときに、10 個のカーソルがすでに開かれていると、そのうち最も古いカーソルが解放されます。クライアントアプリケーションがリリースされたクエリカーソルを開こうとすると、エラーになります。

メモ

login() は、1 時間につき 1 ユーザあたり最大 3600 コールに制限されています。この制限を超えると、「Login Rate Exceeded (ログイン数の制限を超えました。)」エラーが表示されます。

Enterprise と Partner エンドポイント

バージョン 11.1 以前の API では、Partner WSDL で構築されたクライアントアプリケーションは Enterprise エンドポイントに要求を送信可能で、Enterprise WSDL で構築されたアプリケーションは Partner エンドポイントに要求を送信可能です。バージョン 12.0 以降では、この機能はサポートされていません。

プロキシを使用したログイン

プロキシ経由で 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}

セッション終了

クライアントアプリケーションは、セッションを終えるために明示的にログアウトする必要はありません。セッションは、前もって決定された非活動状態の期間の後、自動的に終了します。非活動状態の期間の長さは、[設定] の [セキュリティのコントロール] をクリックすることによって Salesforce で設定できます。デフォルト値は 120 分 (2 時間) です。API コールを行うと、非活動状態タイマーがゼロにリセットされます。

有効なセルフサービスユーザを認証する

Spring '12 リリースから、新しい組織ではセルフサービスポータルを利用できなくなります。既存の組織は、引き続きセルフサービスポータルを使用できます。

メモ

アクティブセルフサービスユーザを認証するには、セルフサービスがユーザの認証に対して LoginScopeHeader を使用して、Organization ID を指定します。認証の前提として、セルフサービスユーザが存在しており、かつ有効である必要があります (SelfServiceUser参照)。

Salesforce Communities でのカスタマーサービスポータルおよびカスタマーポータルユーザの認証

有効なカスタマーコミュニティユーザまたはカスタマーポータルユーザを認証するには、LoginScopeHeader を使用して、コミュニティを含む組織の Organization ID を指定します。カスタマーコミュニティユーザとカスタマーポータルユーザは、認証される前に存在し、有効で、組織のコミュニティに属している必要があります。

ログアウト

Salesforce では、不要になったセッションを終了するために、必ず logout() をコールすることをお勧めします。これは、ログアウトされるセッションだけでなく、子セッションも終了させます。設定されたセッション終了時間まで待つ代わりにログアウトすることによって、ほとんどの保護が行われます。

サンプルコード —Java

このサンプルでは、指定されたユーザ名、パスワード、および認証エンドポイント URL を使用してユーザをログインします。このサンプルでは、ログインの成功後、ユーザ情報とセッション情報をコンソールに書き込みます。このサンプルを実行する前に、ユーザ名、パスワード、認証エンドポイントの値を有効な値に置き換えてください。

API コールを作成するために必要な Web サービス WSDL を生成してインポートする方法については、「クイックスタート」のステップ 2: Web サービス WSDL を生成または取得するを参照してください。

1swfobject.registerObject("clippy.sforce_api_calls_login_java_sample", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public boolean loginSample() {
18   boolean success = false;
19   String username = "username";
20   String password = "password";
21   String authEndPoint = "https://login.salesforce.com/services/Soap/c/24.0/";
22
23   try {
24      ConnectorConfig config = new ConnectorConfig();
25      config.setUsername(username);
26      config.setPassword(password);        
27
28      System.out.println("AuthEndPoint: " + authEndPoint);
29      config.setAuthEndpoint(authEndPoint);
30
31      connection = new EnterpriseConnection(config);
32
33      // Print user and session info
34      GetUserInfoResult userInfo = connection.getUserInfo();
35      System.out.println("UserID: " + userInfo.getUserId());
36      System.out.println("User Full Name: " + userInfo.getUserFullName());
37      System.out.println("User Email: " + userInfo.getUserEmail());
38      System.out.println();
39      System.out.println("SessionID: " + config.getSessionId());
40      System.out.println("Auth End Point: " + config.getAuthEndpoint());
41      System.out
42            .println("Service End Point: " + config.getServiceEndpoint());
43      System.out.println();
44
45      success = true;
46   } catch (ConnectionException ce) {
47      ce.printStackTrace();
48   }
49
50   return success;
51}

サンプルコード —C#

このサンプルでは、指定されたユーザ名、パスワードを使用してユーザをログインします。login コールの結果には、サービスエンドポイント URL が含まれます。この URL は、組織にサービスしている仮想サーバインスタンスであり、一意のセッション ID です。このサンプルでは、バインドにこれらの返された値を設定します。バインド URL に返されたサービスエンドポイントを設定します。また、すべての API コールで使用されているセッションヘッダーのセッション ID を設定します。次に、ログインの成功後、ユーザ情報とセッション情報をコンソールに書き込みます。このサンプルを実行する前に、ユーザ名とパスワードの値を有効な値に置き換えてください。

API コールを作成するために必要な Web サービス WSDL を生成してインポートする方法については、『クイックスタート』のステップ 2: Web サービス WSDL を生成または取得するを参照してください。

1swfobject.registerObject("clippy.CodeblockPrivateVoidLoginC...-027378D1", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public bool loginSample()
18{
19   Boolean success = false;
20   string username = "username";
21   string password = "password";
22
23   // Create a service object 
24   binding = new SforceService();
25 
26   LoginResult lr;
27   try
28   {
29      Console.WriteLine("\nLogging in...\n");
30      lr = binding.login(username, password);
31
32      /** 
33         * The login results contain the endpoint of the virtual server instance 
34         * that is servicing your organization. Set the URL of the binding 
35         * to this endpoint.
36         */
37      // Save old authentication end point URL
38      String authEndPoint = binding.Url;
39      // Set returned service endpoint URL
40      binding.Url = lr.serverUrl;
41
42      /** Get the session ID from the login result and set it for the 
43         * session header that will be used for all subsequent calls.
44         */
45      binding.SessionHeaderValue = new SessionHeader();
46      binding.SessionHeaderValue.sessionId = lr.sessionId;
47
48      // Print user and session info
49      GetUserInfoResult userInfo = lr.userInfo;
50      Console.WriteLine("UserID: " + userInfo.userId);
51      Console.WriteLine("User Full Name: " +
52            userInfo.userFullName);
53      Console.WriteLine("User Email: " +
54            userInfo.userEmail);
55      Console.WriteLine();
56      Console.WriteLine("SessionID: " +
57            lr.sessionId);
58      Console.WriteLine("Auth End Point: " +
59            authEndPoint);
60      Console.WriteLine("Service End Point: " +
61            lr.serverUrl);
62      Console.WriteLine();
63
64      // Return true to indicate that we are logged in, pointed  
65      // at the right URL and have our security token in place.     
66      success = true;
67   }
68   catch (SoapException e)
69   {
70      Console.WriteLine("An unexpected error has occurred: " +
71                                 e.Message + "\n" + e.StackTrace);
72   }
73   return success;
74}

引数

名前 説明
username string ログインで使用する username
password string 指定された username に関連付けられているログインパスワード。

ログイン要求のサイズは、10 KB 未満に制限されています。

応答

LoginResult

障害

LoginFault

UnexpectedErrorFault