Недавно один пользователь «ВКонтакте» задал мне вопрос: как получить Яндекс токен для работы с API Метрикой? Проблема, по своей сути, не вызывает сложностей, хотя на тот момент я не мог дать исчерпывающего ответа. На поиск решения у «неподготовленного» читателя может уйти весьма продолжительный промежуток времени. В этой статье я рассмотрю простой пример работы с API Яндекс Метрикой и подробно распишу все этапы.
Перед тем, как я начну вдаваться в подробности, хочу отметить: Яндекс обладает замечательным API, при помощи которого очень удобно решать поставленные задачи разного плана и уровня сложности. К примеру: получать статистику по сайту за различные промежутки времени или управлять своими счётчиками и аккаунтами.
Теперь стоит наметить план действий для работы с API Яндекс Метрикой, он будет включать в себя несколько пунктов:
- Регистрация нового Яндекс приложения;
- Получение Яндекс токена;
- Написание скрипта для взаимодействия с данными из Метрики.
В последнем пункте я напишу простой скрипт, который будет подключаться к API и получать статистику посещаемости за сегодняшний и вчерашний дни. Думаю это хороший пример, который будет полезен читателю и поможет ему лучше разобраться с принципом работы API Яндекса.
Регистрация приложения
Все пользовательские Яндекс приложения, которые взаимодействуют с Яндекс сервисами находиться на этой странице oauth.yandex.ru. Там же можно найти ссылку на добавление нового приложения - кликнем по ней!
Далее нам предстоит заполнить форму: указываем название нашего приложения, выбираем права «Яндекс.Метрика», в появившихся чекбоксах указываем на второй – «получение статистики». В последнем поле формы жмем на ссылку «Подставить URL для разработки».
Всё - приложение настроено!
Жмём сохранить, и попадает на страницу с информацией о нём. Там мы видим ID приложения, пароль и Callback URL. Из всего этого нам понадобится только ID.
С регистрацией покончено, переходим к следующему этапу.
Получение Яндекс токена
Есть всего три способа, как получить токен, о них вы можете узнать на этой странице – способы получения Яндекс токенов. Я же опишу самый простой и быстрый вариант - это получение «отладочного токена».
В адресную строку браузера вводим ссылку данного вида, в которой вместо «идентификатор_приложения» подставляем ID своего приложения:
https://oauth.yandex.ru/authorize?response_type=token&client_id=идентификатор_приложения
Далее, в появившемся сообщении, выбираем «Разрешить»:
Вот и всё, мы получили заветный токен:
Помимо всего прочего, хочу отметить, и это очень важно: время жизни токена – 1 год. Если этого времени мало, то можно легко автоматизировать процесс, но только для этого придется воспользоваться другими способами получения токина, например «Веб-приложение -> Извлечь токен из URL», об этом в следующих статьях.
Скрипт для работы c API
Сам код довольно простой: это класс, содержащий несколько свойств и методов. Чтобы начать им пользоваться необходимо, заменить значения переменных $token и $counter_id на свои.
class APImetrika{
private $token = "токен";
private $url_api = "https://api-metrika.yandex.ru/";
private $counter_id = "номер_счётчика";
public function get_traffic($date1, $date2){
return $this->get_data(
$this->url_api.
"stat/v1/data?id=".
$this->counter_id.
"&metrics=ym:s:users,ym:s:visits,ym:s:pageviews".
"&pretty=1".
"&date1=".$date1.
"&date2=".$date2.
"&oauth_token=".
$this->token
);
}
private function get_data($url){
if($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = json_decode(
curl_exec($ch), true
);
curl_close($ch);
if(is_array($data)){
return $data;
}
}
return false;
}
}
Теперь поговорим немного о методах класса. Первый метод, и он же главный, get_data() – является внутренним, служит для обращения к API Метрики и получения данных. Второй метод - публичный, с помощью него можно получать статистику, по сформированному в нём URL. Сам метод принимает два параметра: дату начала и дату окончания выборки.
Вот хороший пример использования данного класса: получение статистики посещений за сегодняшний и вчерашний дни.
Получаем данные:
require_once("APImetrika.php");
$obj = new APImetrika();
$today = $obj->get_traffic(
date("Ymd"),
date("Ymd")
);
$last = $obj->get_traffic(
date("Ymd", time() - 86400),
date("Ymd", time() - 86400)
);
Выводим на страницу:
<h2>Cегодня</h2>
<p>
Посетителей:
<?php echo($today["totals"][0]);?>
</p>
<p>
Визитов:
<?php echo($today["totals"][1]);?>
</p>
<p>
Просмотров:
<?php echo($today["totals"][2]);?>
</p>
<h2>Вчера</h2>
<p>
Посетителей:
<?php echo($last["totals"][0]);?>
</p>
<p>
Визитов:
<?php echo($last["totals"][1]);?>
</p>
<p>
Просмотров:
<?php echo($last["totals"][2]);?>
</p>
Более подробно ознакомиться с перечнем действий, которые возможно совершать над API Яндекс Метрикой, можно по этому адресу - справочник разработчика.
Вот так, легко и просто мы управились с API Метрикой.