同様の問題- 2 人の異なる SF ユーザーに対してパートナー/エンタープライズ wsdl を使用する INVALID_SESSION_ID - 解決策を試しましたが、機能しませんでした。
ZF 2 で Salesforce PHP ツールキットを使用しようとしていました。Salesforce SOAP クライアントの php ファイルに名前空間を追加し、それを zend コントローラーで使用しました。
Salesforce SOAP クライアント ライブラリのすべての php ファイルに次の行を追加しました。
namespace Salesforce\Soapclient;
次に、ZFコントローラーに含めました。
use Salesforce\Soapclient;
ここに接続コードがあります -
$empid = 'e1234567';
$sf_WSDL = 'C:\wamp\www\myapp\app\vendor\salesforce\wsdl\enterprise.wsdl.xml';
$sf_username = $config['salesforce']['username'];
$sf_password = $config['salesforce']['password'];
$sf_token = $config['salesforce']['token'];
/***********/
try {
// Create SOAP client instance
$sfSoapClient = new Soapclient\SforceEnterpriseClient();
// Create connection
$sfSoapClient->createConnection($sf_WSDL);
var_dump($_SESSION['enterpriseSessionId']);
if (isset($_SESSION['enterpriseSessionId'])) {
$location = $_SESSION['enterpriseLocation'];
$sessionId = $_SESSION['enterpriseSessionId'];
$sfSoapClient->setEndpoint($location);
$sfSoapClient->setSessionHeader($sessionId);
} else {
// Login to SF
$sfSoapClient->login($sf_username,$sf_password . $sf_token);
$_SESSION['enterpriseLocation'] = $sfSoapClient->getLocation();
$_SESSION['enterpriseSessionId'] = $sfSoapClient->getSessionId();
}
var_dump($_SESSION['enterpriseSessionId']);
// Get candidate profile by employee id
$candidate_profile = $this->getCandidateTable()->getCandidateByEmpId($empid);
$ids = array();
array_push($ids, $empid);
// If no profile for logged internal employee
if (!$candidate_profile){
$query = "SELECT Id, First_Name__c from Employee__c";
$response = $sfSoapClient->query($query);
echo "Results of query '$query'<br/><br/>\n";
foreach ($response->records as $record) {
echo $record->Id . ": " . $record->First_Name__c . "<br/>\n";
}
}
} catch (Exception $exc) {
//TODO Handle error login exception
die('Connection could not established.');
}
しかし、次のエラーが発生します-
INVALID_SESSION_ID: SessionHeader に無効なセッション ID が見つかりました: 不正なセッション
[セッションを発信元の IP アドレスにロックする] 設定がオフになっていることに注意してください。