Имя: Пароль:
1C
 
API Яндекс маркет : Запрос остатков 404 FORBIDDEN OAuth token is invalid
0 bvb
 
09.07.26
14:09
Добрый день

Хочу получить остатки по сабжу.
Код метода вроде типовой
Сгенерили токен с полным доступом Токен = "ACMA:DEBBTNiCsrSfB16QF8m2vZUgA5Gn3nfTKsctbIIm:5323ffaf";

в качестве СampaignId используем Business_ID из кабинета


//https://api.partner.market.yandex.ru/v2/campaigns/{campaignId}/offers/stock
     АдресСервера = "api.partner.market.yandex.ru";
     Ресурс = "/v2/campaigns/" + СampaignId + "/stocks.json"; // или /v3/...
    
     Заголовки = Новый Соответствие;
     //Заголовки.Вставить("Authorization", "OAuth" + OAuth_Токен);  
     Заголовки.Вставить("Authorization", "Bearer " + OAuth_Токен);
     Заголовки.Вставить("Content-Type", "application/json");
     Заголовки.Вставить("Accept", "application/json");
    
     // 2. Инициализация HTTP-соединения
     ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
     HTTPСоединение = Новый HTTPСоединение(АдресСервера, , , , , , ЗащищенноеСоединение);
     HTTPЗапрос = Новый HTTPЗапрос(Ресурс, Заголовки);
    
     // 3. Выполнение GET-запроса
     Ответ = HTTPСоединение.Получить(HTTPЗапрос);
    
     // 4. Обработка ответа
     Если Ответ.КодСостояния = 200 Тогда
         ОтветСтрокой = Ответ.ПолучитьТелоКакСтроку();
        
         // Разбор JSON ответа
         ЧтениеJSON = Новый ЧтениеJSON;
         ЧтениеJSON.УстановитьСтроку(ОтветСтрокой);
         ДанныеОтвета = ПрочитатьJSON(ЧтениеJSON, Истина);
        
         // Пример вывода остатков по товарам
         Если ДанныеОтвета.Свойство("result") И ДанныеОтвета.result.Свойство("stocks") Тогда
             Для Каждого СтрокаОстатка Из ДанныеОтвета.result.stocks Цикл
                 Сообщить("SKU на Маркете: " + СтрокаОстатка.marketSku);
                 Сообщить("Доступно для продажи: " + СтрокаОстатка.count);
             КонецЦикла;
         КонецЕсли;
        
     Иначе
         Сообщить("Ошибка получения данных: " + Ответ.КодСостояния);
         Сообщить(Ответ.ПолучитьТелоКакСтроку());
     КонецЕсли;
1 PLUT
 
гуру
09.07.26
13:53
токен инвалид

доступ запрещён
2 Мультук
 
гуру
09.07.26
13:58
(0)

Это вы настоящий токен светите в интернет или что ?
3 MWWRuza
 
гуру
09.07.26
14:02
(2) Пох, если он все равно не работает :-)
4 bvb
 
09.07.26
14:21
(1) Это я понял

(2) Если что я пару символов поменял ;-)


Вопросы :
1.  Заголовки.Вставить("Authorization", OAuth_Токен);   401 -  {"errors":[{"code":"UNAUTHORIZED","message":"OAuth credentials are not specified"}],"status":"ERROR"}
  
     Заголовки.Вставить("Authorization", "Bearer " + OAuth_Токен);  403-  {"errors":[{"code":"FORBIDDEN","message":"OAuth token is invalid"}],"status":"ERROR"}

И еще я не уверен СampaignId  это бизнесИд или склад

Методе если что bsl писал
5 zenik
 
09.07.26
14:22
Если 1С работает в режиме совместимости меньше 8.3.6, то https не взлетает.
Делай через winHTTP = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
6 bvb
 
09.07.26
14:26
(5) там - "Не использовать"
База на сервере Scloud там  Новый COMОбъект( - работать не будет

Яндекс с озоном у меня работают прекрасно
7 PLUT
 
гуру
09.07.26
14:30
(4) > Методе если что bsl писал

bsl плохо умеет в 1С
8 PLUT
 
гуру
09.07.26
14:33
а что товарищ Postman говорит по поводу (0) ?
https://practicum.yandex.ru/blog/postman-dlya-testirovaniya-api/

или бумеранг для гуглохрома?
https://chromewebstore.google.com/detail/boomerang-soap-rest-clien/eipdnjedkpcnlmmdfdkgfpljanehloah?hl=ru
9 Кир Пластелинин
 
09.07.26
14:48
у яндекс.маркета авторизация по OAuth-токену является устаревшей. сейчас используется Api-Key, который передается в хедерах
10 bvb
 
09.07.26
17:10
(8) Этом в любом случае ключ в теге "Authorization" как его не назови

Скорее всего там либо ресурс запроса не тот либо КлиентИд
неверный
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший