2013-09-22 90 views
0

我試圖使用eBatNS SOAP API獲取會話ID。eBatNS交易API嘗試獲取SessionID的身份驗證問題

使呼叫的功能非常簡單,但始終返回認證錯誤。你可以看到下面的功能

public function get_ebay_session() 
    { 
     error_reporting(0); 
     $ruName = "Forward_Thinker-ForwardT-57fe-4-rybapdi"; 
     $sessionID = ""; 

     //Connect to eBay and get a list of all products 
     require_once 'eBay/EbatNs/EbatNs_ServiceProxy.php'; 
     require_once 'eBay/EbatNs/GetSessionIDRequestType.php'; 
     require_once 'eBay/EbatNs/EbatNs_Logger.php'; 

     //Get a SessionID 
     $session = new EbatNs_Session('eBay/config/ebay.config.php'); 
     print_r($session); 
     echo "<hr>"; 

     $cs = new EbatNs_ServiceProxy($session); 
     $cs->attachLogger(new EbatNs_Logger(false, 'stdout', true, false)); 
     print_r($cs); 
     echo "<hr>"; 

     $req = new GetSessionIDRequestType(); 
     $req->setRuName($ruName); 
     print_r($req); 
     echo "<hr>"; 

     $result = $cs->GetSessionID($req); 

     $sessionID = $result->SessionID; 

     print_r($result); 
     echo "<hr>"; 

     session_start(); 
     $_SESSION['eBaySessionID'] = $sessionID; 

     $return = $ruName."\n".$sessionID; 
     $this->set(compact('return')); 
    } 

正如你可以看到我已附加一個記錄器。記錄器顯示這是正在提出的請求。

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns="urn:ebay:apis:eBLBaseComponents" ><soap:Header><RequesterCredentials><eBayAuthToken>AgAAAA**AQAAAA**aAAAAA**wS7oUQ**nY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wHloSkD5aGog+dj6x9nY+seQ**It4BAA**AAMAAA**CB7yrHTyG3kQbA6KOwf0ZO2MqyPs/Dfn5u5r8ZDVGeWNvB</eBayAuthToken><Credentials><AppId>ForwardT-57fe-41ea-b90e-52fd0b541b88</AppId><DevId>5eefba38-e226-4876-9ada-d8743f571aeb</DevId><AuthCert>b57984cb-ba9c-430c-a8fc-c08f9ac46e75</AuthCert></Credentials></RequesterCredentials></soap:Header><soap:Body><GetSessionIDRequest><Version><![CDATA[815]]></Version><RuName><![CDATA[Forward_Thinker-ForwardT-57fe-4-rybapdi]]></RuName></GetSessionIDRequest></soap:Body></soap:Envelope> 

並認爲這是返回的響應:

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<soapenv:Body> 
    <soapenv:Fault> 
    <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:FailedCheck</faultcode> 
    <faultstring>Authorisation token is invalid.</faultstring> 
    <faultactor>http://www.ebay.com/ws/websvc/eBayAPI</faultactor> 
    <detail> 
    <FaultDetail> 
    <ErrorCode>931</ErrorCode> 
    <Severity>Error</Severity> 
    <DetailedMessage>Validation of the authentication token in API request failed.</DetailedMessage> 
    </FaultDetail> 
    </detail> 
    </soapenv:Fault> 
</soapenv:Body> 
</soapenv:Envelope> 

我ebay.config.php文件擁有所有正確的鍵,而且據我所知,所有的正確信息。有沒有人有任何解決方法的提示?

丹尼

回答

1

此問題是由eBatNS API從得到一個新的令牌請求之前的請求發送令牌造成的。這不受ebay支持。

這可以通過將會話上的令牌模式設置爲0或false來解決。

$session->setTokenMode(0) 
+0

你是我的英雄,thx! –