Создание категории через api

Здравствуйте! 

Пытаюсь создать новую категорию через API:

data = {}
data["name"] = u"Мини камеры видеонаблюдения"
data["url"] = "shpionskie-mini-kamery-videonablyudeniya"
data["description"] = u"Контроль за поведением сотрудников или ребенка, а также защиту от злоумышленников отлично обеспечивают миникамеры. Сфера применения этих компактных устройств достаточно широка, а их небольшие размеры позволяют легко скрыть их в деталях интерьера. Есть модели с креплением – они размещаются в любых местах, даже на одежде или вертикальной поверхности."
data["include_sub_categories"] = "1"
data["status"] = "1"
data["access_token"] = self.access_token

headers = {  'Content-Type': 'application/json',
            'Accept': 'application/json'}
url = "http://*.*.*.*/webasyst/api.php/shop.category.add"
result = requests.post(url, json = data)

Получаю ответ:

{"error":"invalid_request","error_description":"Required parameter is missing: access_token"}

Подскажите, пожалуйста, что я делаю не так ?

С уважением,

Иван

7 ответов

  • 1
    iqwinsa 7 июля 2021 11:38 #

    Required parameter is missing: access_token

    Нужен апи-токен в заголовке

  • 1
    pitekantrop 7 июля 2021 11:55 #

    Спасибо, только получается, что в документации неверная информация:

    Для того чтобы исключить отслеживание токена по URL запросов, передавайте его в составе POST-запроса в поле access_token. В этом случае формируйте URL запроса без использования этого значения

    Авторизация заработала, но теперь возвращается такая ошибка:

    {"error":"invalid_param","error_description":"Required parameter is missing: name"}

    • +1
              $token = waRequest::request('access_token', null, 'string');
              if (!$token) {
                  if (function_exists('getallheaders')) {
                      $headers = getallheaders();
                      $token = ifset($headers, 'Authorization', null);
                  }
                  if (!$token) {
                      $token = waRequest::server('HTTP_AUTHORIZATION', null, 'string');
                  }
                  if ($token) {
                      $token = preg_replace('~^(Bearer\s)~ui', '', $token);
                  }
              }
              if (!$token) {
                  throw new waAPIException('invalid_request', 'Required parameter is missing: access_token', 400);
              }
      

      Ну тут вроде всё однозначно. Если токена нет в POST/GET параметрах, то проверяются еще заголовки.
      Уверены что у вас access_token в POST-е прилетает на сервер?

  • 1
    pitekantrop 7 июля 2021 18:48 #

    Кто-нибудь знает, почему сервер может не получать параметры, передаваемые через POST-запросы?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите