【发布时间】:2016-01-05 12:52:53
【问题描述】:
我正在尝试使用 OpenCart 2 API,但我并不完全熟悉它,也不是一般的 Opencart TBH。
我在管理区域创建了一个 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);
返回响应如下:
array(2) { ["success"]=> string(42) "成功:API 会话 成功启动!" ["token"]=> string(32) “rfjOIzMWobWSvKvdy2LnWsekp9v1qoQQ”}
然后,在此之后,我调用 API 中的 cart/add 函数,将产品(按 ID)添加到购物车:
$url = "http://opencart.local:8888/index.php?route=api/cart/add";
$cartData = array(
"product_id" => '47',
"quantity" => '1'
);
我以同样的方式 CURL,但我从 OpenCart 得到的响应是:
数组(1){[“错误”]=>数组(1){ [“警告”]=> string(54) "警告:您没有访问 API 的权限!" } }
当我检查问题时,似乎缺少 opencart 授予权限所需的 api_id:
$this->session->data['api_id']
即使这是在通过 API 登录时设置的。当我第二次调用将产品添加到购物车时,它以某种方式丢失了此会话数据。请记住,当它上线时,我将无法访问 OpenCart 代码,因为这是一个外部 CRM,它只能通过 API 进行通信,只需要用户名、密码和 API 密钥。
有什么想法吗?我会感谢任何帮助,因为我是 OpenCart 的菜鸟!
谢谢
【问题讨论】:
-
转到:
Admin CP > System > Users > User Groups > Administrator [edit] > Select all Access and Permissions and click save. -
我很欣赏这可能是我开发的解决方案,但最终我将无法控制 OpenCart 安装,因为我正在创建的是连接到 OpenCart 的第三方 CRM,如果可能我更喜欢使用默认设置,因为大多数客户可能不会这样做。
-
其实所有权限都是默认选择的......
-
那么您必须在 OC 管理面板中
configure API。如果没有任何配置,您将无法再访问 API。 -
你有管理面板访问权限吗?
标签: php api session curl opencart