1

このチュートリアルに従っています http://wiki.developerforce.com/page/Integrating_Force.com_with_Microsoft_.NET

ただし、次のエラーが発生します。

LOGIN_MUST_USE_SECURITY_TOKEN: ユーザー名、パスワード、セキュリティ トークンが無効です。またはユーザーがロックアウトされました。あなたは新しい場所にいますか?デスクトップ クライアントまたは API を介して、会社の信頼できるネットワークの外部から Salesforce にアクセスする場合、パスワードにセキュリティ トークンを追加してログインする必要があります。新しいセキュリティ トークンを受け取るには、salesforce.com にログインします。http://login.salesforce.comをクリックし、[設定] | [設定] をクリックします。私の個人情報 | セキュリティトークンをリセットします。

これは私のコンソールアプリの私のコードです:

static void Main(string[] args)
        {
            string userName;
            string password;
            userName = "me@myWebsite.com";
            password = "myPassword";

            SforceService SfdcBinding = null;
            LoginResult CurrentLoginResult = null;
            SfdcBinding = new SforceService();
            try
            {
                CurrentLoginResult = SfdcBinding.login(userName, password);
            }
            catch (System.Web.Services.Protocols.SoapException e)
            {
                // This is likley to be caused by bad username or password
                SfdcBinding = null;
                throw (e);
            }
            catch (Exception e)
            {
                // This is something else, probably comminication
                SfdcBinding = null;
                throw (e);
            }

        }

エラーには、セキュリティ トークンが必要であると示されていますが、ドキュメントにはそれが記載されていないようで、取得方法がわかりません。

4

2 に答える 2

9

私がしなければならなかったこと(ドキュメントにはありませんでした)は、ここに行くことです:

https://na15.salesforce.com/_ui/system/security/ResetApiTokenConfirm?retURL=%2Fui%2Fsetup%2FSetup%3Fsetupid%3DPersonalInfo&setupid=ResetApiToken

そして、トークンをリセットします。次に、次のようにパスワードの末尾に追加します。

パスワード = "mypassword" の場合

そしてあなたのセキュリティトークン= "XXXXXXXXXX"

パスワードの代わりに「mypasswordXXXXXXXXXX」を入力する必要があります

参考文献 http://docs.servicerocket.com/pages/viewpage.action?pageId=83099770

于 2013-07-26T16:53:27.923 に答える
2

このような SOAP API では、最初にユーザー名とパスワードを提供してサービスに対して認証する必要があります。彼らの応答は、一定期間有効な認証トークンを返す必要があります。次に、その後の通信で、このトークンを API に渡して、あなたが誰であるかを認識できるようにします。

認証トークンを取得します。

SforceService SfdcBinding = null;
LoginResult CurrentLoginResult = null;
SfdcBinding = new SforceService();
try 
{
   CurrentLoginResult = SfdcBinding.login(userName, password);
}
catch (System.Web.Services.Protocols.SoapException e) 
{
   // This is likely to be caused by bad username or password
   SfdcBinding = null;
   throw (e);
}
catch (Exception e) 
{
   // This is something else, probably communication
   SfdcBinding = null;
   throw (e);
}

セッションをセットアップします。

//Change the binding to the new endpoint
SfdcBinding.Url = CurrentLoginResult.serverUrl;

//Create a new session header object and set the session id to that returned by the login
SfdcBinding.SessionHeaderValue = new SessionHeader();
SfdcBinding.SessionHeaderValue.sessionId = CurrentLoginResult.sessionId;

クエリを実行します。

QueryResult queryResult = null;
String SOQL = "select FirstName, LastName, Phone from Lead where email = 'john.smith@salesforce.com'";
queryResult = SfdcBinding.query(SOQL);
于 2013-07-26T16:44:04.323 に答える