0

Wordpress の登録にフックし、Salesforce データベースに登録されているユーザーを追加することで、比較的単純なタスクを実行しようとしています。Wordpress の外部で Salesforce db コードを実行すると問題なく動作しますが、Wordpress Web サイトに登録してこれをテストすると、次のエラーが表示されます。 INVALID_LOGIN: 無効なユーザー名、パスワード、セキュリティ トークン。またはユーザーがロックアウトされました。

さらに、Wordpress から「ヘッダー情報を変更できません - ヘッダーは既に送信されています」というエラーが表示され、Salesforce に送信されているオブジェクト データ全体を表示できません。

これは私のコードです:

 $SF_USERNAME = 'test';
 $SF_PASSWORD = 'test';

 define( 'CD_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );

 require_once (CD_PLUGIN_PATH . 'Toolkit/soapclient/SforceEnterpriseClient.php');
 require_once (CD_PLUGIN_PATH . 'Toolkit/soapclient/SforceHeaderOptions.php');


 function add_user_to_SF($user_id) {
$user = get_userdata($user_id);

 try {
     $mySforceConnection = new SforceEnterpriseClient();
     $mySoapClient = $mySforceConnection->createConnection(CD_PLUGIN_PATH . 'Toolkit/soapclient/enterprise.wsdl.xml');
     $mylogin = $mySforceConnection->login($SF_USERNAME, $SF_PASSWORD);

     print '<pre>'; 
     print_r($mylogin);
     print '</pre>';
     print '<br/><br/>';

$sObject = new stdclass();
$sObject->FirstName = $user->first_name;
$sObject->LastName = $user->last_name;
$sObject->Email = $user->user_email;

//echo "**** Creating the following:\r\n";
$createResponse = $mySforceConnection->create(array($sObject), 'Contact');

$ids = array();
    foreach ($createResponse as $createResult) {
        print_r($createResult);
        array_push($ids, $createResult->id);
    }

    } catch (Exception $e) {
      $errors->add( 'demo_error', __(print_r($_POST),'mydomain') );
      $errors->add( 'demo_error', __($mySforceConnection->getLastRequest(),'mydomain') );
      $errors->add( 'demo_error', __($e->faultstring,'mydomain') );
      return $errors;
}

}

 add_filter( 'registration_errors', 'add_user_to_SF', 10, 3 );
4

3 に答える 3

1

これはphpスコープの問題です。

追加: グローバル $SF_USERNAME; グローバル $SF_PASSWORD;

関数内で問題を修正しました。

于 2013-03-14T18:41:48.147 に答える
1

セキュリティ トークンが不足しているようです。パスワードの末尾に追加されます。

このリンクは、トークンを生成する方法を説明しています

https://login.salesforce.com/help/doc/en/user_security_token.htm

于 2013-03-15T05:13:10.693 に答える
0

たとえば、パスワードを使用してセールスフォース アカウントのセキュリティ トークンを追加する必要があります。パスワード - "testing" セキュリティ トークン - "2321njjn32j32" 次のように渡す必要があります - "testing2321njjn32j32"

これで正常に動作します。

于 2014-01-28T05:41:16.090 に答える