Для быстрого старта вы можете посмотреть этот видео урок посвящённый
авторизации в 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 дней токен автоматически будет обновлён, и файл с учётными данными перезаписан.
Ещё раз обращаю внимание на то, что хоть вы в любой момент при желании можете пройти аутентификацию в API Яндекс Директ с помощью функции yadirAuth, но это действие не является обязательным, т.к. при использовании любой функции пакета будет запущен поиск файла с учётными данными, и если файл не будет найден, то автоматически будет запущен процесс авторизации и запроса токена.
yadirGetToken()
Функция для получения токена для доступа к API Яндекс.Директ с помощью упрощённой одноэтапной аутентификации. Полученый токен используется во всех остальных функциях. Перед запуском функции необходимо авторизироваться в яндексе под логином через который есть доступ к аккаунту Яндекс.Директ, далее запустить функции, в окне браузера подтвердить разрешение на доступ к данным.
Полученный токен необходимо скопировать с сайта и ввести в консоль R,
далее вам будет предложено сохранить полученный токен в файл,
рекомендуется отвечать y
, в таком случае вам не придётся
проходить авторизации при старте новой R сессии.
Ещё один способ получить токен, скопировать его, и использовать во всех остальных функциях как обычную текстовую строку.
Если у вас не отображается кнопка перейдите на страницу официальной документации ryandexdirect по этой ссылке.
Во всех функции пакета существуют общие аргументы, в дальнейшем эти аргументы рассматриваться в описании функций не будут.
Таким образом при работе с обычным рекламным аккаунтом вам необходимо передавать логин этого аккаунта в аргументе Login или Logins. При запуске любой функции в первую очередь будет запущен процесс поиска учётных данных для заданного логина в папке, название или путь к которой указан в аргументе TokenPath. Если файл с учётными данными для заданного логина был найден то работа функции будет продолжена без вашего вмешательства, если учётные данные для данного логина ещё не были получены, или были получены но вы не указали путь к папке в которой данный файл был сохранён то автоматически будет запущен веб браузер и вам потребуется пройти авторизацию и разрешить доступ пакету ryandexdirect к вашему рекламному аккаунту, учётные данные при этом будут сохранены в локальный файл и при дальнейшей работе будут загружаться именно из файла.
Для получения статистики по рекламным аккаунтам прикреплённым к агентскому аккаунту необходимо использовать аргумент AgencyAccount, в который необходимо передать логин или почту для вашего агентского аккаунта, а в аргумент Login / Logins передавать логин клиента, или вектор содержащий логины клиентов данного агентского аккаунта, по которым вы хотите запросить какие либо данные или совершить ещё какие либо действия.
Авторизация в данном случае будет проходить по агентскому аккаунту.
Прописывать в каждой отдельной функции аргументы Login
,
TokenPath
, AgencyAccount
неудобно, особенно
если в ходе сессии работаете только с одним аккаунтом.
Вы можете использовать следующие, вспомогательные функции для того, что бы посмотреть список всех аккаунтов к которым вы сгенерировали файлы с учётными данными, и для переключения между этими аккаунтами.
yadirSetLogin()
- позволяет вам установить логин
который будет использоваться в ходе сессии по умолчанию, так же в ходе
сессии с помощью этой функции вы можете переключаться между
аккаунтами.yadirGetLogins()
- позволяет вам запросить логины всех
аккаунтов к которым вы сгенерировали и созранили учётные данные, далее,
при работе в интерактивном режиме функция выведит их список, и вы можете
указать номер аккаунта, который будет установлен в текущей сессии по
умолчанию.Ещё одна возможность избежать дублирования кода - установить дефолтные значения через опции или переменные среды.
Пакет ryandexdirect
на данный момент поддерживает
следующие опции:
ryandexdirect.user
- логин по умолчаниюryandexdirect.agency_account
- логин центра клиентов по
умолчаниюryandexdirect.token_path
- путь к директории в которой
хранятся файлы с полученными учётными даннымиУстанавливаются опции с помощью команды 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 в пакет были включены новые функции, которые позволяют повысить
читаемость вашего кода, и упростить переход между аккаунтами.
yadirGetLogins()
- Показывает все логины под которыми
вы прошли авторизацию, при этом запрашиваются те логины которые учётные
данные которых сохраненны в указанной папке с помощью аргумента
TokenPath
, либо опции ryandexdirect.token_path
или переменной среды RYD_TOKEN_PATH
.yadirSetLogin()
- Позволяет установить дефолтный логин,
который будет использоваться в рамках сессии.yadirSetAgencyAccount()
- Позволяет установить
дефолтный центр клиентов, который будет использоваться в рамках
сессии.Обо всех подробностях использования данных функций вы можете узнать из данного видео урока.