Клуб Яндекс.Метрики

Впечатления от работы с API

Пост в архиве.

Ранее я опубликовал здесь анонс своего плагина TI-Stat. Работа по развитию продолжается, а здесь я расскажу о работе с API Yandex.Metrika.

Прежде всего скажу, что мне понравилась простота и хорошая докумментированость. Но есть пара минусов, с которыми я столкнулся в работе и о которых хочу рассказать.

Проверка токена авторизации

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

Для проверки валидности я перед запросами к данным делаю запрос списка доступных счетчиков. Во-первых это проверяет валидность токена, во-вторых проверяет, что обрабатываемый счетчик доступен данному пользователю.

Получение токена авторизации

Для получения токена можно просить пользователя ввести имя-пароль от яндекса. Это не хорошо, но в данном случае единственная возможность.

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

Callback URI.

Во время регистрации приложения оно задается в параметрах. Если я устанавливаю плагин у себя на блоге, то callback будет например tigor.org.ua/wp-content/plugins/ti-stat/callback.php, а на другом сайте будет уже example.com/wp-content/plugins/ti-stat/callback.php . Было бы хорошо иметь возможность задавать CallBack URI как один из параметров запроса.

Мелочи

Не во всех отчетах есть сортировка данных. Например для отчета по посещениям данные выдаются от новых к старым. В итоге график строится задом-наперед. Это конечно мелочь, всегда можно устроить сортировку в приложении, но все-же.

3 комментария

>Нет интерфейса для проверки валидности полученного токена

Да, выданный токен может быть в любой момент отозван пользователем. Веб-сервис при этом должен отвечать согласно спецификации OAuth - 401 Unauthorized, а в http-ответе также будет

WWW-Authenticate: OAuth realm='Metrika', error='expired_token'

 

По хорошему, приложение должно уметь обрабатывать ошибки и тогда не потребуется перед вызовом API делать "лишний" запрос на проверку токена.

>Callback URI

Да, получается что один и тот же плагин, исполняемый на разных сайтах будет являться отдельным приложением, которое нужно регистрировать в oauth.yandex.ru. Я не нашел в документации по oauth как можно автоматизированно регистрировать приложения, но Вы можете спросить у тех.поддержки oauth http://feedback.yandex.ru/?from=oauth

 

Да, выданный токен может быть в любой момент отозван пользователем.
Веб-сервис при этом должен отвечать согласно спецификации OAuth - 401 Unauthorized, а в http-ответе также будет

У меня оно этому только учится :) Но все равно лучше один раз проверить валидность токена, а не запускать 10 выборок с ошибкой.

 

Да, получается что один и тот же плагин, исполняемый на разных сайтах
будет являться отдельным приложением, которое нужно регистрировать в
oauth.yandex.ru.
Не обязательно. Если использовать авторизацию по имени-паролю, то можно забить на CallBack URI.

Другое дело, что это не самое приятное решение с точки зрения безопасности.

Сортировка данных - в отчете по трафику в веб-интерфейсе Метрики нет сортировки, как только она там появистя, то и в API тоже будет. В большинстве других отчетов сортировка присутствует.