No tienes permiso para acceder a la API. OpenCart

Contenido





  • 1. Caso simple





  • 2. Caso de cliente





  • 3. 驴Cu谩l es el problema?





  • 4. Resoluci贸n de problemas





  • 5. Resultado





Caso simple

Normalmente, el  problema con el acceso a la API de OpenCart  ocurre cuando el acceso a la API no est谩 configurado.





La direcci贸n IP a煤n no se ha agregado a la lista de accesos API permitidos.
La direcci贸n IP a煤n no se ha agregado a la lista de accesos API permitidos.

Para resolver este problema, debe ir al panel de administraci贸n  --API



, ir al objeto deseado en la lista y  agregar su direcci贸n IP a la lista .





Agregue su direcci贸n IP a la lista de accesos API permitidos
IP API

, API   IP-



  .





OpenCart 2.3 ...





, / :  API!





, 2 , OpenCart 2.3, .





Un mensaje que aparece a menudo en la p谩gina de edici贸n de pedidos.

, ,  ( ), , - .





, ,  



, - 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, .





El cliente est谩 satisfecho, ambos sitios funcionan, el problema est谩 resuelto. Sin embargo, no se ha identificado la fuente del problema, hay varias suposiciones, tal vez lo verifique de alguna manera.





Autor: Vitaly Buturlin








All Articles