О сайтеПравилаКонтакты
  • Крипто
  • Новости
  • Статьи
  • Люди
  • Теги
» Статьи » Разработка » Работа с API Яндекс Метрикой
  • Инструменты
  • Заработок
  • Раскрутка
08 января 2015 . Антон Кулешов

Работа с API Яндекс Метрикой

Недавно один пользователь «ВКонтакте» задал мне вопрос: как получить Яндекс токен для работы с API Метрикой? Проблема, по своей сути, не вызывает сложностей, хотя на тот момент я не мог дать исчерпывающего ответа. На поиск решения у «неподготовленного» читателя может уйти весьма продолжительный промежуток времени. В этой статье я рассмотрю простой пример работы с API Яндекс Метрикой и подробно распишу все этапы.

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

Теперь стоит наметить план действий для работы с API Яндекс Метрикой, он будет включать в себя несколько пунктов:

  • Регистрация нового Яндекс приложения;
  • Получение Яндекс токена;
  • Написание скрипта для взаимодействия с данными из Метрики.

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

Регистрация приложения

Все пользовательские Яндекс приложения, которые взаимодействуют с Яндекс сервисами находиться на этой странице oauth.yandex.ru. Там же можно найти ссылку на добавление нового приложения - кликнем по ней!

registratsiya-prilozheniya-yandeks

Далее нам предстоит заполнить форму: указываем название нашего приложения, выбираем права «Яндекс.Метрика», в появившихся чекбоксах указываем на второй – «получение статистики». В последнем поле формы жмем на ссылку «Подставить URL для разработки».

zapolnenie-formy-registratsii-prilozheniya-yandeks

Всё - приложение настроено!

Жмём сохранить, и попадает на страницу с информацией о нём. Там мы видим ID приложения, пароль и Callback URL. Из всего этого нам понадобится только ID.

informatsiya-o-yandeks-prilozhenii

С регистрацией покончено, переходим к следующему этапу.

Получение Яндекс токена

Есть всего три способа, как получить токен, о них вы можете узнать на этой странице – способы получения Яндекс токенов. Я же опишу самый простой и быстрый вариант - это получение «отладочного токена».

В адресную строку браузера вводим ссылку данного вида, в которой вместо «идентификатор_приложения» подставляем ID своего приложения:

https://oauth.yandex.ru/authorize?response_type=token&client_id=идентификатор_приложения

Далее, в появившемся сообщении, выбираем «Разрешить»:

razrezhenie-na-dostup-k-statistiki-yandeks-prilozheniya

Вот и всё, мы получили заветный токен:

yandeks-token-prilozheniya

Помимо всего прочего, хочу отметить, и это очень важно: время жизни токена – 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 Метрикой.

#API
24 315 4
Антон Кулешов
Аутентификация через «ВКонтакте» Аутентификация через Twitter GraphQL для начинающих REST – это новый SOAP Создание RESTful API: пошаговая инструкция
Aleksandr
Aleksandr
12 июня 2016
Антон, спасибо за статью! У меня возникла такая задача, не мог бы мне кто-нибудь помочь?

Задача такая: нужно найти способ, как выцепить поисковую фразу перешедшего с поисковика пользователя. Затем нужно эту фразу прикрепить к форме, которую пошлёт этот пользователь. Метрика имеет доступ к этим данным. Но как с её помощью достать фразу данного посетителя? Я знаю, что раньше эти данные с лёгкостью можно было достать с помощью $_SERVER[«HTTP_REFERER»]. Сейчас же таким образом можно достать фразу только из контекстной рекламы

Пожалуйста, помогите. Можете ли подсказать скрипт API Метрики, достающий поисковую фразу, по которой перешёл посетитель?
Антон Кулешов
Антон Кулешов
13 июня 2016
Начну с того, что в $_SERVER[«HTTP_REFERER»] лежит не фраза, а адрес ресурса, с которого перешёл посетитель (читаем php мануал). Ну и касательно получения поискового запроса конкретного посетителя, зашедшего на сайт, – этого сделать нельзя, так как эти данные обрабатываются на стороне поисковика.
Aleksandr
Aleksandr
13 июня 2016
Ну вот запрос из контекстной рекламы с помощью $_SERVER[«HTTP_REFERER»] и регулярного выражения запросто достаётся. Поисковики недавно закрыли эту возможность?
Антон Кулешов
Антон Кулешов
14 июня 2016
Подобной возможности, насколько я знаю, никогда и не было. Было бы весьма жирно для веб-мастера - отслеживать поисковую фразу в момент захода пользователя на сайт. Из контекстной рекламы, я так полагаю, вы извлекаете utm метки, значения которых и парсятся.

Как сделать всплывающие подсказки, разбираемся с WebUI Popover

Эффект дождя на JavaScript

Популярное
1 Пишем парсер контента на PHP2 Кликджекинг как соцфишинг, пишем скрипт для получения id пользователя вконтакте3 Лучший способ прижать футер используя flexbox4 Пишем первый модуль для 1С-Битрикс с использованием ядра D75 Делаем подгрузку контента при прокрутке страницы
Обратите внимание