Anda tidak memiliki izin untuk mengakses API. OpenCart

Kandungan





  • 1. Kasus sederhana





  • 2. Kasus pelanggan





  • 3. Apa masalahnya?





  • 4. Pemecahan masalah





  • 5. Hasil





Kasus sederhana

Biasanya,  masalah dengan akses ke OpenCart API  terjadi ketika akses API tidak dikonfigurasi.





Alamat IP belum ditambahkan ke daftar akses API yang diizinkan
Alamat IP belum ditambahkan ke daftar akses API yang diizinkan

Untuk mengatasi masalah ini, Anda perlu pergi ke panel admin  --API



, pergi ke objek yang diinginkan dalam daftar dan  tambahkan alamat IP Anda ke daftar .





Tambahkan alamat IP Anda ke daftar akses API yang diizinkan
Tambahkan alamat IP Anda ke daftar akses API yang diizinkan

, API   IP-



  .





OpenCart 2.3 ...





, / :  API!





, 2 , OpenCart 2.3, .





Pesan yang sering muncul di halaman edit order

, ,  ( ), , - .





, ,  



, - API . .   , API.





,  Ajax API OpenCart, API.





ajax , . , . API , ...





?

 Ajax API, .





 catalog/controller/api/login.php



 ( API /index.php?route=api/login



),  API key



  IP  ( ),      api



   api_id



:





$session_id_new = $this->session->createId();
$this->session->start('api', $session_id_new);
$this->session->data['api_id'] = $api_info['api_id'];
      
      



 catalog/controller/startup/session.php



 ( ,  catalog



, ),      api



:





$this->session->start('api', $query->row['session_id']);
      
      



 system/library/session.php



   start



:





public function start($key = 'default', $value = '') {
if ($value) {
    $this->session_id = $value;
} elseif (isset($_COOKIE[$key])) {
    $this->session_id = $_COOKIE[$key];
} else {
    $this->session_id = $this->createId();
}   
 
if (!isset($_SESSION[$this->session_id])) {
    $_SESSION[$this->session_id] = array();
}
 
$this->data = &$_SESSION[$this->session_id];
 
//...
}
      
      



session_id



   api



,  session_id



.





API OpenCart  catalog



  :





if (!isset($this->session->data['api_id'])) {
  $json['error']['warning'] = $this->language->get('error_permission');
} else {
  ...
}
      
      



, , .





,  $_SESSION



   ( ), API  catalog/controller/startup/session.php



   api



 .





:





 session_id



   api_key



, API,  session_id



 ,  action_pre_action



(  system/config/catalog.php



)  .





 api_id



, API :  API!





. , .





,  ( , , ), , , .





 $_SESSION



  , :  api_id



, API .





 $_SESSION



   catalog/controller/startup/session.php



  :





$query = $this->db->query("SELECT DISTINCT * FROM `" . DB_PREFIX . "api` `a` LEFT JOIN `" . DB_PREFIX . "api_session` `as` ON (a.api_id = as.api_id) LEFT JOIN " . DB_PREFIX . "api_ip `ai` ON (as.api_id = ai.api_id) WHERE a.status = '1' AND as.token = '" . $this->db->escape($this->request->get['token']) . "' AND ai.ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "'");
      
      



, ,  api_id



.





 catalog/controller/startup/session.php



  :





if ($query->num_rows) {
    $this->session->start('api', $query->row['session_id']);
 
    //       
    $this->session->data["api_id"] = $query->row["api_id"];
     
    //...
}
      
      



  API! !





  API!   catalog/controller/startup/session.php



   api_id



$this->session->data["api_id"] = $query->row["api_id"];







:   API!, ( ) ajax API OpenCart, .





Klien puas, kedua situs berfungsi, masalah terpecahkan. Namun, sumber masalahnya belum teridentifikasi, ada beberapa asumsi, mungkin saya akan memeriksanya.





Penulis: Vitaly Buturlin








All Articles