Получаем OAuth-токен Яндекс.Директ API: Полный гайд
Сегодня мы подробно разберем процесс получения OAuth-токена для доступа к Яндекс.Директ API. Впервые сталкиваясь с процессом получения токена, будь-то API от Google или Яндекса, я по-началу терялся в заявках, регистрациях и прочей бюрократической вакханалии. Поэтому я, буквально, за руку проведу тебя к заветному апи-токену, который мы сразу и проверим.
Как следует из справки Яндекс.Директ API, вся процедура делится на два этапа:
- Регистрация на сервисе Яндекс.OAuth
- Создание заявки на доступ к API
Регистрируем приложение в Яндекс.Директ API
Авторизуемся из под аккаунта с кабинетом Яндекс.Директ, данные которого нас интересуют. Переходим на страницу oauth.yandex.ru, и жмем на желтую кнопку «Зарегистрировать новое приложение». И заполняем поля, согласно плану:
- Название приложения*: DirectDataDealer
- Описание приложения: Необязательное. Но я всё таки напишу: Приложение для проброса данных в системы сквозной аналитики
- Иконка приложения: Необязательное.
- Ссылка на сайт приложения: Необязательное.
- Платформы: Веб-сервисы и в поле Callback Url жмем Подставить URL для разработки.
- Доступы*: Яндекс.Директ -> Использование API Яндекс.Директа
Отлично, приложение создано, на выходе получится что-то похожее на это:
Отлично, пол дела сделано, осталось запросить доступ к API.
Создаем заявку на доступ к Яндекс.Директ API
Теперь создадим заявку, тут всё довольно просто. Идём сюда и создаем заявку на доступ. Начинаем заполнять:
- Введите application_id или выберите из списка*: В дропменю выбираем наше приложение в моём случае это DirectDataDealer.
- Укажите один или несколько контактов, по которым с вами быстро сможет связаться служба поддержки*: Пишем ваш мейл.
- Данные о компании: Скорее всего у вас или у вашего клиента уже есть сайт, в моем случае Akulshin.ru и https://akulshin.ru/
- Выберите утверждение, которое лучше всего описывает специфику вашей работы. Вы:* Я прямой рекламодатель, а вы?
- Технические данные о приложении: Язык программирования — Python, протокол — Json, версия библиотек — 3.8. В примерах из моих статьей используются именно эти версии.
- Для примера успешной работы приложения, укажите один или несколько логинов в Директе, для которых оно используется*: Абсурд, если вы регистрируете своё первое приложение, то просто укажите текущий логин в Яндексе.
- Для чего предназначено приложение*: В моем случае это — Синхронизировать рекламные материалы с данными внутренних систем (товары, деньги, отчетность)
- Основные функции приложения*: Получение статистики и отчетов
- Какие новые возможности работы с Директом дает ваше приложение пользователям?*: Я написал, что «Агрегирую данные в сквозной аналитике и предикторе. Получение статистики Яндекс.Директ и её дальнейшая обработка.»
- Опишите схему взаимодействия вашего приложения с Директом*: Программа запускается автоматически 2 раза в сутки, в основном используем метод «AccountManagement» и сервис Campaign для получения статистики, далее передаем в базу, где обрабатываем.
- Спецификации, скриншоты интерфейса*: Либо нарисуйте блок-схему обработки данных, либо как я заскриньте IDE, пусть какому-нибудь модеру из Яндекса станет за вас стыдно.
- По возможности предоставьте нам демо-доступ к программе: Игнорируем этот пункт
Бум! Всё готово, отправляем на рассмотрение. После прохождения, в итоге получим такую картину:
Получаем OAuth-токен Яндекс.Директ:
Существует 2 способа получения API-токена: Ручной и Автоматический
Так как мы не пишем приложение, которое будут использовать десятки авторизованных пользователей, то нам хватит и ручного получения токена. Теперь дело за малым, делаем запрос на выдачу «API-ключа», который мы будем использовать в нашем приложении. Для этого:
- Открываем новую вкладку в браузере и вводим в адресную строку https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор приложения> Идентификатор приложения берем отсюда:
- Переходим по ссылке https://oauth.yandex.ru/
- Жмем на наше приложение, DirectoDataDealer, в моем случае.
- И копируем из поля ID: 78d2c09*************efbc6a64f6e
- Вставляем ID вместе <идентификатор приложения>, жмем Enter
- О чудо, перед нами явился наш Auth-токен
Ну что, всё готово для тестового запроса, поехали?
Тестовый запрос для проверки работы Яндекс.Директ API:
Давайте запросим список текущих рекламных кампаний в кабинете?
Код примера:
import requests def get_campaigns(login, token): # адрес для отправки json-запросов url = 'https://api.direct.yandex.com/json/v5/campaigns' # заголовки headers = {"Authorization": "Bearer " + token, # OAuth-токен. Использование слова Bearer обязательно "Client-Login": login, # Логин клиента рекламного агентства "Accept-Language": "ru", # Язык ответных сообщений } # тело запроса body = {"method": "get", # Используемый метод. "params": {"SelectionCriteria": {}, # Критерий отбора кампаний. Для получения всех кампаний должен быть пустым "FieldNames": ["Id", "Name"] # Имена параметров, которые требуется получить. }} # выполнить запрос response = requests.post(url, json=body, headers=headers) # Вытаскиваем список кампаний campaigns = response.json()['result']['Campaigns'] # принтим for campaign in campaigns: print(campaign) # Вызываем функцию и получаем список кампаний, не забудьте поменять вводные get_campaigns('ВАШ ЛОГИН', 'ТОКЕН')
Полезные материалы для изучения:
- Регистрация приложения Яндекс.Директ API: https://yandex.ru/dev/direct/doc/dg/concepts/register.html
- Заявка на доступ к API: https://yandex.ru/dev/direct/doc/dg/concepts/register.html#request