Vous n'êtes pas autorisé à accéder à l'API. OpenCart

Teneur





  • 1. Cas simple





  • 2. Cas client





  • 3. Quel est le problème?





  • 4. Résolution de problèmes





  • 5. Résultat





Cas simple

En règle générale, le  problème d'accès à l'API OpenCart  se produit lorsque l' accès à l'API n'est pas configuré.





L'adresse IP n'a pas encore été ajoutée à la liste des accès API autorisés
L'adresse IP n'a pas encore été ajoutée à la liste des accès API autorisés

Pour résoudre ce problème, vous devez vous rendre dans le panneau d'administration  --API



, accéder à l'objet souhaité dans la liste et  ajouter votre adresse IP à la liste .





Ajoutez votre adresse IP à la liste des accès API autorisés
IP API

, API   IP-



  .





OpenCart 2.3 ...





, / :  API!





, 2 , OpenCart 2.3, .





Un message qui apparaissait souvent sur la page de modification de la commande

, ,  ( ), , - .





, ,  



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





Le client est satisfait, les deux sites fonctionnent, le problème est résolu. Cependant, la source du problème n'a pas été identifiée, il y a plusieurs hypothèses, je vais peut-être le vérifier d'une manière ou d'une autre.





Auteur: Vitaly Buturlin








All Articles