2016-01-05 58 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');