0

同様の問題- 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 アドレスにロックする] 設定がオフになっていることに注意してください。

4

0 に答える 0