Авторизация в Яндекс Директ

Alexey Seleznev

2023-03-17

Видео инструкция по авторизации

Для быстрого старта вы можете посмотреть этот видео урок посвящённый авторизации в API Яндекс.Директ с помощью пакета ryandexdirect.

Получение токена

Для генерации токена в пакете есть две функции, yadirAuth() и yadirGetToken(). Получить токен можно с помощью любой из этих функций, но я рекомендую использовать yadirAuth, функция yadirGetToken() считается устарвшей начиная с ryandexdirect 3.0.0.

Разница между ними состоит в том, что yadirGetToken() просто генерирует токен и перенаправляет вас на страницу где вы можете его скопировать, а yadirAuth первый раз направляет вас на старницу где будет сгенерирован код для получения токена, после чего сама запрашивает токен и сохраняет в файл, в дальнейшем сама его обновляет и работает с сохранённым файлом.

Вы можете передавать токен в виде строки в агрумент Token при работе с любой из функций, но этот метод является устаревшим и не эффективным способом работы с функциями пакета ryandexdirect.

В версии 3.5.0 в пакет была добавлена новая функция для прохождения аутентификации в API yadirAuth(), но отдельно вызывать её для получения токена больше не требуется, при любом обращении к API если вы в используемой функции явно не указываете никакой токен, любая функция пакета сначала будет искать файл с сохранёнными учётными данными в рабочей директории, или в папке которую вы укажите в аргументе AgencyAccount, если файл найден то учётные данные будут загружены из него, если файл не был найден то будет открыт браузер и вам потребуется разрешить приложению ryandexdirect доступ к своему рекламному аккауну, далее будет сформирован код авторизации, который вам необходимо вставить в R консоль в ответ на запрос “Enter authorize code:”, после чего функция сама сохранит учётные данные в файл с именем login.yadirAuth.RData, где вместо login будет подставлен логин аккаунта к которому вы предоставили доступ, это необходимо для сохранения токенов полученных для разных аккаунтов. При следующих обращениях, все функции пакета будут запрашивать токен из сохранённого файла.

Пример кода для прохождения авторизации

aut <- yadirAuth(Login = "Ваш логин в яндексе", NewUser = TRUE, TokenPath = "token_yandex")

Обновление токена

При каждом обращении к API проверяется количество дней до того как используемый токен станет просроченным, если остаётся менее 30 дней токен автоматически будет обновлён, и файл с учётными данными перезаписан.

Аргументы функции yadirAuth

Ещё раз обращаю внимание на то, что хоть вы в любой момент при желании можете пройти аутентификацию в API Яндекс Директ с помощью функции yadirAuth, но это действие не является обязательным, т.к. при использовании любой функции пакета будет запущен поиск файла с учётными данными, и если файл не будет найден, то автоматически будет запущен процесс авторизации и запроса токена.

Авторизация с помощью функции yadirGetToken()

Функция для получения токена для доступа к API Яндекс.Директ с помощью упрощённой одноэтапной аутентификации. Полученый токен используется во всех остальных функциях. Перед запуском функции необходимо авторизироваться в яндексе под логином через который есть доступ к аккаунту Яндекс.Директ, далее запустить функции, в окне браузера подтвердить разрешение на доступ к данным.

авторизация

Полученный токен необходимо скопировать с сайта и ввести в консоль R, далее вам будет предложено сохранить полученный токен в файл, рекомендуется отвечать y, в таком случае вам не придётся проходить авторизации при старте новой R сессии.

Можно получить токен воспользовавшись кнопкой

Ещё один способ получить токен, скопировать его, и использовать во всех остальных функциях как обычную текстовую строку.


Получить токен доступа к API!


Если у вас не отображается кнопка перейдите на страницу официальной документации ryandexdirect по этой ссылке.

Аргументы, общие для всех функций

Во всех функции пакета существуют общие аргументы, в дальнейшем эти аргументы рассматриваться в описании функций не будут.

Работа с обычным рекламным аккаунтом

Таким образом при работе с обычным рекламным аккаунтом вам необходимо передавать логин этого аккаунта в аргументе Login или Logins. При запуске любой функции в первую очередь будет запущен процесс поиска учётных данных для заданного логина в папке, название или путь к которой указан в аргументе TokenPath. Если файл с учётными данными для заданного логина был найден то работа функции будет продолжена без вашего вмешательства, если учётные данные для данного логина ещё не были получены, или были получены но вы не указали путь к папке в которой данный файл был сохранён то автоматически будет запущен веб браузер и вам потребуется пройти авторизацию и разрешить доступ пакету ryandexdirect к вашему рекламному аккаунту, учётные данные при этом будут сохранены в локальный файл и при дальнейшей работе будут загружаться именно из файла.

Работа с агентским аккаунтом

Для получения статистики по рекламным аккаунтам прикреплённым к агентскому аккаунту необходимо использовать аргумент AgencyAccount, в который необходимо передать логин или почту для вашего агентского аккаунта, а в аргумент Login / Logins передавать логин клиента, или вектор содержащий логины клиентов данного агентского аккаунта, по которым вы хотите запросить какие либо данные или совершить ещё какие либо действия.

Авторизация в данном случае будет проходить по агентскому аккаунту.

Функции для переключения между аккаунтами

Прописывать в каждой отдельной функции аргументы Login, TokenPath, AgencyAccount неудобно, особенно если в ходе сессии работаете только с одним аккаунтом.

Вы можете использовать следующие, вспомогательные функции для того, что бы посмотреть список всех аккаунтов к которым вы сгенерировали файлы с учётными данными, и для переключения между этими аккаунтами.

Опции и переменные среды

Ещё одна возможность избежать дублирования кода - установить дефолтные значения через опции или переменные среды.

Опции

Пакет ryandexdirect на данный момент поддерживает следующие опции:

Устанавливаются опции с помощью команды options().

options(ryandexdirect.user = 'my_yandex_login',
        ryandexdirect.agency_account = 'my_client_centre_login',
        ryandexdirect.token_path = 'C:/auth/yandex_direct')

Используя пример кода для установки опций вам необходимо подставить значения вместо:

Переменные среды

Помимо опций ryandexdirect поддерживает работу с переменными среды, их можно установить, что бы не прописывать в каждом отдельном скрипте опции.

На данный момент поддерживаются следующие переменные среды:

Прописать переменные среды можно либо в файле .Renviron

RFB_USER="my_yandex_login"
RFB_TOKEN_PATH="C:/auth/yandex_direct"

Либо вы можете использовать команду Sys.setenv():

Sys.setenv(RFB_USER="my_yandex_login"
           RFB_TOKEN_PATH="C:/auth/yandex_direct")

Либо использовать возможности вашей операционной системы, для создания переменных среды.

Функции для быстрого переключения между аккаунтами

В принципе вы можете указывать нужный аккаунт с помощью аргумента Login, в любой из функций пакета, так же вы можете указать нужный вам аккаунт через опции или переменные среды, но начиная с версии 3.6.0 в пакет были включены новые функции, которые позволяют повысить читаемость вашего кода, и упростить переход между аккаунтами.

Обо всех подробностях использования данных функций вы можете узнать из данного видео урока.