Php Opencart 2 API会话问题

Php Opencart 2 API会话问题,php,api,session,curl,opencart,Php,Api,Session,Curl,Opencart,我试图使用OpenCart 2 API,但我对它并不完全熟悉,也不完全熟悉OpenCart 我已经在管理区创建了一个API密钥,通过传递用户名、密码和API密钥本身,我可以从外部源成功地与API通信,并收到一条成功消息 例如: $url = "http://opencart.local:8888/index.php?route=api/login"; $postData = array( "username" => $username, "password"

我试图使用OpenCart 2 API,但我对它并不完全熟悉,也不完全熟悉OpenCart

我已经在管理区创建了一个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){[“success”]=>string(42)“成功:API会话” 已成功启动!“[“令牌”]=>字符串(32) “rfjOIzMWobWSvKvdy2LnWsekp9v1qoQQ”}

然后,在此之后,我调用API中的cart/add函数,将产品(按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登录时设置的。当我第二次调用将产品添加到购物车时,它不知怎的丢失了会话数据。请记住,当启动live时,我将无法访问OpenCart代码,因为这是一个外部CRM,只能通过API使用用户名、密码和API密钥进行通信

有什么想法吗?我将感谢任何帮助,因为我是OpenCart的noob


谢谢你

我也有过类似的经历;我不小心删除了API密钥并创建了一个新的,但是API刚刚停止工作

我发现
$this->config->get('config\u api\u id')始终返回“1”。因此,在数据库上将我新创建的API键
API_id
值更改为1,它就工作了


我正在使用2.1.0.1版

我有过类似的经历;我不小心删除了API密钥并创建了一个新的,但是API刚刚停止工作

我发现
$this->config->get('config\u api\u id')始终返回“1”。因此,在数据库上将我新创建的API键
API_id
值更改为1,它就工作了


我使用的是2.1.0.1版

您需要在curl选项中为cookies传递一个文件。几乎所有的认证都需要它来写和读:curl_setopt($handle,CURLOPT_COOKIEJAR,'cookie_file.txt')

您需要在curl选项中为cookies传递一个文件。几乎所有的认证都需要它来写和读:curl_setopt($handle,CURLOPT_COOKIEJAR,'cookie_file.txt')

转到:
Admin CP>System>Users>User Groups>Administrator[edit]>选择所有访问权限并单击save。
我很感激这可能是我开发的解决方案,但最终我将无法控制OpenCart的安装,因为我创建的是一个连接到OpenCart的第三方CRM,如果可能的话,我更喜欢使用默认设置,因为大多数客户端可能不喜欢这样做。实际上,所有权限都被选为默认权限…然后您必须在OC Admin面板中配置API
。如果没有任何配置,您将无法访问API。您是否具有管理面板访问权限?请转到:
admin CP>System>Users>User Groups>Administrator[edit]>选择所有访问权限和权限,然后单击save。
我很感激这可能是我的开发解决方案,但最终我将无法控制OpenCart的安装,因为我正在创建的是一个连接到OpenCart的第三方CRM,如果可能的话,我更愿意使用默认设置,因为大多数客户可能不喜欢这样做。实际上,所有权限都被选为默认权限…然后您必须在OC管理面板中配置API
。如果没有任何配置,您将无法访问API。您有管理面板访问权限吗?