Как правильно получить токен для работы с API Яндекс Маркета из 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация Торговля и дистрибуция
← На главную

Многие разработчики при интеграции 1С с Яндекс Маркетом сталкиваются с ошибкой 403 «Token is invalid». Основная причина заключается в непонимании того, как именно устроена авторизация OAuth 2.0. Давайте разберем по шагам, как правильно настроить обмен данными и получить необходимый токен доступа.

Разбираемся в понятиях: Client Secret и OAuth-токен

Первое, что необходимо усвоить — Client Secret (секретный ключ приложения) и OAuth-токен — это совершенно разные сущности. Секретный ключ выдается при регистрации приложения в кабинете разработчика и служит для «подтверждения личности» вашего приложения при обмене временного кода на полноценный токен. Его нельзя использовать в заголовках запросов к API вместо самого токена.

Для авторизации запросов к API Яндекс Маркета используется токен, который передается в заголовке Authorization в формате Bearer <ваш_токен>.

Пошаговый алгоритм получения токена

Процесс авторизации состоит из двух этапов, которые мы должны реализовать в нашей обработке или модуле интеграции:

  1. Получение кода авторизации. Пользователь должен перейти по специальной ссылке (URL авторизации), авторизоваться своим Яндекс-аккаунтом и подтвердить доступ приложению.
  2. Обмен кода на токен. Полученный после перехода код мы отправляем POST-запросом на сервер Яндекса, чтобы получить финальный access_token.

Реализация обмена кода на токен в 1С

Для обмена временного кода на токен нам необходимо выполнить POST-запрос к адресу https://oauth.yandex.ru/token. Важно правильно сформировать тело запроса и указать тип контента application/x-www-form-urlencoded.

Давайте посмотрим, как это выглядит на практике:


СтрокаЗапроса = "grant_type=authorization_code" +
    "&code=" + КодАвторизации + 
    "&client_id=" + IDПриложения + 
    "&client_secret=" + ПарольПриложения;

// Далее формируем HTTP-запрос в 1С:
HTTPЗапрос = Новый HTTPЗапрос("/token");
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаЗапроса);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");

После отправки такого запроса с помощью объекта HTTPСоединение, вы получите JSON-ответ, содержащий access_token. Именно этот токен необходимо сохранять в константы или регистры сведений вашей базы 1С для последующего использования в заголовках запросов к Маркету.

Использование Debug Token для отладки

Если вы только начинаете разработку и не хотите тратить время на написание логики обработки редиректов и получения кодов, воспользуйтесь Debug Token (отладочным токеном). Это специальный токен, который можно сгенерировать вручную в кабинете разработчика Яндекса для вашего приложения.

Преимущества отладочного токена:

Важные рекомендации при работе с API

Чтобы ваша интеграция работала стабильно и не переставала отвечать через некоторое время, учтите следующие моменты:

  1. Срок жизни токена. Токены не вечны. Обязательно реализуйте механизм обновления токена с помощью refresh_token, который также приходит в ответе от сервера Яндекса.
  2. Права доступа (Scope). При регистрации приложения убедитесь, что вы выбрали правильные права (scope). Если права указаны неверно, сервер будет выдавать ошибку доступа, даже при наличии «правильного» токена.
  3. Анализ запросов. Если вы сомневаетесь в структуре запроса, можно скачать официальное расширение от Яндекса для 1С (если оно доступно для вашей конфигурации) и проанализировать отладчиком, как именно там реализованы обращения к методам API.

Следуя этим рекомендациям и строго разделяя этапы авторизации, вы сможете успешно реализовать обмен данными между 1С и Яндекс Маркетом. Начните с получения отладочного токена, чтобы убедиться в корректности формирования заголовков, а затем переходите к автоматизации процесса получения и обновления токенов в штатном режиме.

← На главную