0

我正在尝试通过连接到 Wordpress 注册并将正在注册的用户添加到 Salesforce 数据库来完成一项相对简单的任务。当我在 Wordpress 之外运行 Salesforce db 代码时,它可以完美运行,但是当我通过在我的 wordpress 网站上注册来测试它时,我收到一条错误消息:INVALID_LOGIN: Invalid username, password, security token; 或用户被锁定。

此外,我从 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

您需要使用密码添加您的 salesforce 帐户安全令牌,例如。密码 - “testing” 安全令牌 - “2321njjn32j32” 您需要通过 - “testing2321njjn32j32”

这将正常工作。

于 2014-01-28T05:41:16.090 回答