APIにアクセスする権限がありません。OpenCart

コンテンツ





  • 1.シンプルなケース





  • 2.カスタマーケース





  • 3.問題は何ですか?





  • 4.問題解決





  • 5.結果





シンプルなケース

通常、  OpenCart APIへのアクセスに関する問題 は、APIアクセスが構成されていない場合に発生します。





許可されたAPIアクセスのリストにIPアドレスがまだ追加されていません
許可されたAPIアクセスのリストにIPアドレスがまだ追加されていません

この問題を解決するには、管理パネル --API



に移動し、リスト内の目的のオブジェクトに移動して、IPアドレスをリストに追加する必要があります 





許可されたAPIアクセスのリストにIPアドレスを追加します
許可されたAPIアクセスのリストにIPアドレスを追加します

, API   IP-



  .





OpenCart 2.3 ...





, / :  API!





, 2 , OpenCart 2.3, .





注文編集ページによく表示されるメッセージ

, ,  ( ), , - .





, ,  



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





クライアントは満足しており、両方のサイトが機能しており、問題は解決しています。ただし、問題の原因は特定されていません。いくつかの仮定があります。何らかの方法で確認します。





著者:Vitaly Buturlin








All Articles