2016-01-05 59 views
1

我正在嘗試使用OpenCart 2 API,但我並不完全熟悉它,也沒有在一般的TBH中使用Opencart。Opencart 2 API會話問題

我在管理區域創建了一個API密鑰,並且我可以通過傳遞用戶名,密碼和API密鑰本身來成功地與來自外部源的API通信,並且我收到了成功消息。

實施例:

$url = "http://opencart.local:8888/index.php?route=api/login"; 
$postData = array(
     "username" => $username, 
     "password" => $password, 
     "key" => $key 
    ); 

$handle = curl_init($url); 
curl_setopt($handle, CURLOPT_HEADER, true); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($handle, CURLOPT_POST, true); 
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($postData)); 

$response = curl_exec($handle); 

$header_size = curl_getinfo($handle, CURLINFO_HEADER_SIZE); 
$headers = substr($response, 0, $header_size); 
$response = substr($response, $header_size); 

curl_close($handle); 

$return = json_decode($response, true); 

返回響應如下:

陣列(2){[ 「成功」] =>串(42)「成功:API會話 成功啓動!」 [ 「令牌」] =>串(32) 「rfjOIzMWobWSvKvdy2LnWsekp9v1qoQQ」}

然後,在這之後,我調用API以卡車/添加功能,以添加品(ID)連接到購物車:

$url = "http://opencart.local:8888/index.php?route=api/cart/add"; 
$cartData = array(
     "product_id" => '47', 
     "quantity" => '1' 
    ); 

我以同樣的方式捲曲,但我從Opencart的得到的響應是:

陣列(1){[ 「錯誤」] =>數組(1){ [」警告「] => 字符串(54)」警告:您沒有權限使用API​​!「 }}

當我檢查這個問題,似乎這是由Opencart的要求,以授予權限的api_id丟失:

$this->session->data['api_id'] 
即使通過API登錄時這個設置

。當我第二次打電話給購物車添加產品時,它會以某種方式丟失會話數據。請記住,在啓用此功能時,我將無法訪問OpenCart代碼,因爲這是一個只能通過API與僅用戶名,密碼和API密鑰進行通信的外部CRM。

任何想法?我很感激任何幫助,因爲我是OpenCart的noob!

謝謝

+0

轉到:管理CP>系統>用戶>用戶組>管理員[編輯]>選擇所有訪問和權限,然後單擊save.' –

+0

我明白這可能是我開發的解決方案,但最終我會沒有對OpenCart安裝的控制,因爲我創建的是第三方CRM,它連接到OpenCart,並且如果可能的話,我寧願使用默認設置,因爲大多數客戶端可能不會很舒服。 –

+0

其實,所有的權限都被選爲默認.... –

回答

0

我有過類似的經歷;我不小心刪除了API密鑰並創建了一個新密鑰,但API停止工作。

我發現$this->config->get('config_api_id');總是返回'1'。因此,將我新創建的API密鑰api_id的值更改爲1,並且它工作正常。

我使用的版本2.1.0.1

0

你需要傳遞一個文件的餅乾,在嫋嫋的選項。幾乎所有的認證都需要它來編寫和讀取:curl_setopt($ handle,CURLOPT_COOKIEJAR,'cookie_file.txt');