Получаем OAuth-токен Яндекс.Директ API: Полный гайд

Получаем API токен Яндекс.Директ

Сегодня мы подробно разберем процесс получения OAuth-токена для доступа к Яндекс.Директ API. Впервые сталкиваясь с процессом получения токена, будь-то API от Google или Яндекса, я по-началу терялся в заявках, регистрациях и прочей бюрократической вакханалии. Поэтому я, буквально, за руку проведу тебя к заветному апи-токену, который мы сразу и проверим.

Как следует из справки Яндекс.Директ API, вся процедура делится на два этапа:

  • Регистрация на сервисе Яндекс.OAuth
  • Создание заявки на доступ к API

Регистрируем приложение в Яндекс.Директ API

Авторизуемся из под аккаунта с кабинетом Яндекс.Директ, данные которого нас интересуют. Переходим на страницу oauth.yandex.ru, и жмем на желтую кнопку «Зарегистрировать новое приложение». И заполняем поля, согласно плану:

  • Название приложения*: DirectDataDealer
  • Описание приложения: Необязательное. Но я всё таки напишу: Приложение для проброса данных в системы сквозной аналитики
  • Иконка приложения: Необязательное.
  • Ссылка на сайт приложения: Необязательное.
  • Платформы: Веб-сервисы и в поле Callback Url жмем Подставить URL для разработки.
  • Доступы*: Яндекс.Директ -> Использование API Яндекс.Директа

Отлично, приложение создано, на выходе получится что-то похожее на это:

Заявка на доступ к Яндекс.Директ API

Отлично, пол дела сделано, осталось запросить доступ к API.


Создаем заявку на доступ к Яндекс.Директ API

Теперь создадим заявку, тут всё довольно просто. Идём сюда  и создаем заявку на доступ. Начинаем заполнять:

  • Введите application_id или выберите из списка*: В дропменю выбираем наше приложение в моём случае это DirectDataDealer.
  • Укажите один или несколько контактов, по которым с вами быстро сможет связаться служба поддержки*: Пишем ваш мейл.
  • Данные о компании: Скорее всего у вас или у вашего клиента уже есть сайт, в моем случае Akulshin.ru и https://akulshin.ru/
  • Выберите утверждение, которое лучше всего описывает специфику вашей работы. Вы:* Я прямой рекламодатель, а вы?
  • Технические данные о приложении: Язык программирования — Python, протокол — Json, версия библиотек — 3.8. В примерах из моих статьей используются именно эти версии.
  • Для примера успешной работы приложения, укажите один или несколько логинов в Директе, для которых оно используется*: Абсурд, если вы регистрируете своё первое приложение, то просто укажите текущий логин в Яндексе.
  • Для чего предназначено приложение*: В моем случае это — Синхронизировать рекламные материалы с данными внутренних систем (товары, деньги, отчетность)
  • Основные функции приложения*: Получение статистики и отчетов
  • Какие новые возможности работы с Директом дает ваше приложение пользователям?*: Я написал, что «Агрегирую данные в сквозной аналитике и предикторе. Получение статистики Яндекс.Директ и её дальнейшая обработка.»
  • Опишите схему взаимодействия вашего приложения с Директом*: Программа запускается автоматически 2 раза в сутки, в основном используем метод «AccountManagement» и сервис Campaign для получения статистики, далее передаем в базу, где обрабатываем.
  • Спецификации, скриншоты интерфейса*: Либо нарисуйте блок-схему обработки данных, либо как я заскриньте IDE, пусть какому-нибудь модеру из Яндекса станет за вас стыдно.
  • По возможности предоставьте нам демо-доступ к программе: Игнорируем этот пункт

Бум! Всё готово, отправляем на рассмотрение. После прохождения, в итоге получим такую картину:

Заявка на доступ к Яндекс.Директ API


Получаем OAuth-токен Яндекс.Директ:

Существует 2 способа получения API-токена: Ручной и Автоматический

Так как мы не пишем приложение, которое будут использовать десятки авторизованных пользователей, то нам хватит и ручного получения токена. Теперь дело за малым, делаем запрос на выдачу «API-ключа», который мы будем использовать в нашем приложении. Для этого:

  1. Открываем новую вкладку в браузере и вводим в адресную строку https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор приложения> Идентификатор приложения берем отсюда:
    1. Переходим по ссылке https://oauth.yandex.ru/
    2. Жмем на наше приложение, DirectoDataDealer, в моем случае.
    3. И копируем из поля ID: 78d2c09*************efbc6a64f6e
    4. Вставляем ID вместе <идентификатор приложения>, жмем Enter
    5. О чудо, перед нами явился наш 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('ВАШ ЛОГИН', 'ТОКЕН')

 


Полезные материалы для изучения: