Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481

API, requests, не получается собрать запрос, ошибка 403

10.05.2022, 18:16. Показов 5728. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, есть api, не могу понять куда token передавать надо, ниже в примере он находится в поле - "Authorization: Bearer"

Что есть в спецификации по endpoints:
Request samples
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
POST /api/client/statistics HTTP/1.1
Host: performance.ozon.ru:443
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.WyJFTWhVVU...qTz2XXZBv41h4
Content-Type: application/json
Accept: application/json
 
{
    "campaigns":["48852"],
    "from":"2020-06-01T00:00:00.000Z",
    "to":"2020-07-20T00:00:00.000Z",
    "dateFrom":"2020-06-01",
    "dateTo":"2020-07-20",
    "groupBy":"DATE"
}
Мои действия, получаю token() который действует 30 минут get_access_token() в функции, далее передаю его хедерс и получаю 403 ошибку
Возможно и не в хедерс его надо передавать, не знаю

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def get_access_token():
    client_id = '*****-****@advertising.performance.ozon.ru'
    client_secret = '***-***-***--***'
 
    url = 'https://performance.ozon.ru/api/client/token'
    data = "{\"client_id\":\"" + client_id + "\",\"client_secret\":\"" + client_secret + "\",\"grant_type\":\"client_credentials\"}"
 
    r = requests.post(url, data=data)
    res = r.content.decode()
    a = res.replace('"Станкин"', r'\"Станкин\"')
 
    return json.loads(a)['access_token']
 
 
access_token = get_access_token()
 
url = 'https://performance.ozon.ru:443/api/client/statistics'
data = {
    "campaigns": ["11111"],
    "dateFrom": "2020-06-01",
    "dateTo": "2023-07-20",
    "groupBy": "DATE"
}
 
headers = {'Bearer': access_token}
 
r = requests.post(url, json=data, headers=headers)
>> Response [403]
r.content.decode()
>> {'error': 'Ошибка авторизации, ресурс недоступен'}
Не знаю разберётся кто или нет, но на гитхабе видел вот такой код, он рабочий, тут немного другой эндпоинт дёргается, но суть одна
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 private async Task<List<CampaignIdFromOzon>> CreateCampaign(List<CampaignForCreate> campaigns, TokenClass token)
        {
            CampaignIdFromOzon cid;
            List<CampaignIdFromOzon> campaignIdList = new List<CampaignIdFromOzon>();
            HttpClient httpClient = new HttpClient();
            httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token.access_token);
            HttpRequestMessage request = new HttpRequestMessage();
            HttpResponseMessage response = new HttpResponseMessage();
            request.RequestUri = new Uri("https://performance.ozon.ru:443/api/client/campaign/cpm/product");//https://performance.ozon.ru:443/api/client/campaign/cpm/product
            request.Method = HttpMethod.Post;
 
            foreach (CampaignForCreate campaign in campaigns)
            {
                request.Content = new StringContent("{\"title\":\"" + campaign.title + "\",\"dailyBudget\":\"" + campaign.dailyBudget + "\",\"placement\":\"" + campaign.placement + "\",\"expenseStrategy\":\"" + campaign.expenseStrategy + "\"}",
                    Encoding.UTF8, "application/json");
 
                response = httpClient.PostAsync(request.RequestUri, request.Content).Result;
 
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    MessageBox.Show(response.StatusCode.ToString());
 
                    break;
                }
 
                cid = await response.Content.ReadAsAsync<CampaignIdFromOzon>();//не стринг, а список кампаний: https://docs.ozon.ru/api/performance/#operation/ListCampaigns
                if (cid.campaignId != "")
                    campaignIdList.Add(cid);
                //MessageBox.Show(cid.campaignId);
            }
            return campaignIdList;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2022, 18:16
Ответы с готовыми решениями:

Ошибка 403 от pip requests
403: forbidden о чем ошибка? заранее благодарю и статус код а не ошибка, извиняюсь

VK API requests ошибка
Здравствуйте, выполняю такой запрос ...

GET запрос 403 ошибка
Здравствуйте, может кто подсказать почему при моем запросе появляется ответ 403? string url =...

4
213 / 109 / 46
Регистрация: 12.12.2016
Сообщений: 399
10.05.2022, 19:34
Лучший ответ Сообщение было отмечено RSAX как решение

Решение

Python
1
headers = {"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.WyJFTWhVVU...qTz2XXZBv41h4"}
1
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
11.05.2022, 07:48  [ТС]
New Life, о, спасибо огромное, 2 дня думал как сделать, а поддержка молчала, лучший)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
11.05.2022, 07:52
интереса ради, поддержка озона поддерживает клиентский код?
0
102 / 85 / 25
Регистрация: 21.05.2019
Сообщений: 481
11.05.2022, 09:35  [ТС]
Jabbson, подсказывают иногда, но ждать можно недели 2 ответа по вопросам API
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2022, 09:35
Помогаю со студенческими работами здесь

Django Ошибка доступа (403) Ошибка проверки CSRF. Запрос отклонён
На хостинге разместил сайт и не могу войти в админку, т.к. возникает 403 ошибка &quot;Ошибка доступа (403). Ошибка проверки CSRF. Запрос...

API Запрос как правильно собрать
и так мне нужно получить список коментов на странице через js Так выглядит говый апи запрос ...

Не получается ajax запрос из js api
Делаю карту с возможнастью добавления пользователем радиуса на карте с последующим занесением координат в бд . Требуется 2 переменные...

Не получается запрос к Ютуб через API
Здравствуйте. Только начал изучать Api ютуба и сразу запнулся. Делаю гет запрос из примера в их документации: ...

Не получается послать запрос к API forismatic
Всем привет! Посылаю запрос к API forismatic следующим образом: fetch( ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru