Php Opencart API:会话应用程序id问题(如何获取API id)

Php Opencart API:会话应用程序id问题(如何获取API id),php,api,session,opencart,opencart2.3,Php,Api,Session,Opencart,Opencart2.3,我正在开发Opencart API(Opencart v2.3),并遵循此链接获取文档()。但是没有关于opencart api以及如何使用它的数据,所以我遵循其他网站的步骤,并使用这些代码在调用登录api时收到此消息,Success:api会话成功启动 但每当我使用另一个API在购物车中添加产品、查看购物车或添加订单时,我都会收到权限问题。我调试代码,发现它需要会话应用程序id,当我检查时,它只存储令牌,而不存储应用程序id 我使用谷歌搜索到的以下代码。 common.php <?php

我正在开发Opencart API(Opencart v2.3),并遵循此链接获取文档()。但是没有关于opencart api以及如何使用它的数据,所以我遵循其他网站的步骤,并使用这些代码在调用登录api时收到此消息,Success:api会话成功启动

但每当我使用另一个API在购物车中添加产品、查看购物车或添加订单时,我都会收到权限问题。我调试代码,发现它需要会话应用程序id,当我检查时,它只存储令牌,而不存储应用程序id

我使用谷歌搜索到的以下代码。
common.php

<?php
function do_curl_request($url, $params=array()) {
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_COOKIEJAR, 'E:\practice\oc2.3\tmp\apicookie.txt');
  curl_setopt($ch, CURLOPT_COOKIEFILE, 'E:\practice\oc2.3\tmp\apicookie.txt');

  $params_string = '';
  if (is_array($params) && count($params)) {
    foreach($params as $key=>$value) {
      $params_string .= $key.'='.$value.'&'; 
    }
    rtrim($params_string, '&');

    curl_setopt($ch,CURLOPT_POST, count($params));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string);
  }

  //execute post
  $result = curl_exec($ch);

  //close connection
  curl_close($ch);

  return $result;
}
<?php
require "common.php";

// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct';
$fields = array(
  'product_id' => '32',
  'quantity' => '1',
  'option[226]' => '15'
);

$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
<?php
require "common.php";

// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct&token=KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo';
$fields = array(
  'product_id' => '32',
  'quantity' => '1',
  'option[226]' => '15'
);

$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);

将令牌放在您的请求URL之后,这样它就可以工作了

假设
api/login
返回的令牌是
KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo

add_product.php

<?php
function do_curl_request($url, $params=array()) {
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_COOKIEJAR, 'E:\practice\oc2.3\tmp\apicookie.txt');
  curl_setopt($ch, CURLOPT_COOKIEFILE, 'E:\practice\oc2.3\tmp\apicookie.txt');

  $params_string = '';
  if (is_array($params) && count($params)) {
    foreach($params as $key=>$value) {
      $params_string .= $key.'='.$value.'&'; 
    }
    rtrim($params_string, '&');

    curl_setopt($ch,CURLOPT_POST, count($params));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string);
  }

  //execute post
  $result = curl_exec($ch);

  //close connection
  curl_close($ch);

  return $result;
}
<?php
require "common.php";

// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct';
$fields = array(
  'product_id' => '32',
  'quantity' => '1',
  'option[226]' => '15'
);

$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
<?php
require "common.php";

// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct&token=KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo';
$fields = array(
  'product_id' => '32',
  'quantity' => '1',
  'option[226]' => '15'
);

$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);

将令牌放在您的请求URL之后,这样它就可以工作了

假设
api/login
返回的令牌是
KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo

add_product.php

<?php
function do_curl_request($url, $params=array()) {
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_COOKIEJAR, 'E:\practice\oc2.3\tmp\apicookie.txt');
  curl_setopt($ch, CURLOPT_COOKIEFILE, 'E:\practice\oc2.3\tmp\apicookie.txt');

  $params_string = '';
  if (is_array($params) && count($params)) {
    foreach($params as $key=>$value) {
      $params_string .= $key.'='.$value.'&'; 
    }
    rtrim($params_string, '&');

    curl_setopt($ch,CURLOPT_POST, count($params));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string);
  }

  //execute post
  $result = curl_exec($ch);

  //close connection
  curl_close($ch);

  return $result;
}
<?php
require "common.php";

// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct';
$fields = array(
  'product_id' => '32',
  'quantity' => '1',
  'option[226]' => '15'
);

$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
<?php
require "common.php";

// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct&token=KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo';
$fields = array(
  'product_id' => '32',
  'quantity' => '1',
  'option[226]' => '15'
);

$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);

确保将服务器的IP地址添加到允许的IP地址中

要检查,请转到
系统→ 使用者→ API
然后编辑
默认值

到达后,单击
IP地址
选项卡并插入服务器IP地址

要获取服务器IP地址,可以使用以下命令行:

$ curl ipinfo.io/ip

确保将服务器的IP地址添加到允许的IP地址中

要检查,请转到
系统→ 使用者→ API
然后编辑
默认值

到达后,单击
IP地址
选项卡并插入服务器IP地址

要获取服务器IP地址,可以使用以下命令行:

$ curl ipinfo.io/ip

我已经这样做了,但我仍然得到错误。我想,不知怎么的,在某个地方,会话被刷新或删除了。你还有其他想法吗?我得到了权限错误,但我已经通过复制opencart的新版本如何处理会话解决了这个问题。@GellieAnn我也有同样的问题。你还记得你是如何解决这个问题的吗?@Aris,就像我说的,我复制了新版本的opencart处理会话的方式。它涉及编辑system/library/session.php和catalog/controller/startup/session.php。您只需在最新的opencart上复制代码。我已经做了很多测试,但是我不能让旧版本工作,因此我决定只使用新版本。我已经做了,但是我仍然得到了错误。我想,不知怎么的,在某个地方,会话被刷新或删除了。你还有其他想法吗?我得到了权限错误,但我已经通过复制opencart的新版本如何处理会话解决了这个问题。@GellieAnn我也有同样的问题。你还记得你是如何解决这个问题的吗?@Aris,就像我说的,我复制了新版本的opencart处理会话的方式。它涉及编辑system/library/session.php和catalog/controller/startup/session.php。您只需在最新的opencart上复制代码。我已经做了很多测试,但是我不能让旧版本工作,因此我决定只使用新版本。