Учимся работать с API Яндекс Метрики на PHP.

23.12.2013 - 3096 просмотров ;)

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

Меня всегда гнобила мысль о том что надо аудентифицироваться, а это честно говоря первый шаг который сносил мне голову. То ли дело АПИ Betamax, где в каждом запросе передются логин и пароль. У Яндекса нужно передавать некий Токен (впрочем это классика).

Чтобы получить Токен надо аудентифицироваться.

И тут вся эта схема становится похожа на большую неповоротливую поросюшку. 

Нужно: 

  1. сначала аудентифицироваться
  2. передать данные приложения
  3. получить токен
  4. с этим токеном каждый раз делать запросы

А перед этим нужно получить id и пароль приложения в Админке Яндекса (единоразово)

Согласитесь: «Чужие для Хищников» 

но хватит вас кошмарить.

Я писал свое первое приложение для работы с АПИ Метрики на DevelStudio [ http://develstudio.ru/(т.е. на PHP GUI). Я вообще обожаю этот проект и все свои наработки я делаю именно в нем, потому что это обалденный инструмент для прототипов (простых приложений).

Это как Дельфи, но PHP и в 100 раз проще. Грусное тут только одно, автор DevelStudio слился и не желает более развивать проект, а пишет какие-то совершенно малополезные для большинства вещи на Java. Грусть аттакуэ.

Итак хватит грустить и поедем к АПИ Метрики.

У нас должно быть:

  1. Логин и пароль от Метрики.
  2. id и пароль приложения  [  https://oauth.yandex.ru/client/ ]
  3. id сайта [ http://metrika.yandex.ru/  ]

Теперь о костыле который поможет вам без тошноты провести все проклятые аудентификации. Это просто PHP класс, который написал неизвестно кто и положил в паблик тут [ http://flash-world.ru/raznoe/php/177-php-klass-dlya-raboty-s-api-yandeks-metrika.html ]

Спасибо ему. И хотя костыль небольшой, но все же обертку которую он сделал крайне приятна. Возможно без него все будет немного больше похоже на портянку, но я крайне люблю короткий код и даже смирился с объектной моделью этого костыля. =)

Скачайте его и подключите к проекту.

Код работы с Метрикой

// беру из формы
$app_id     = c("id")->text ;
// беру из формы
$app_pass   = c("password")->text;
// создаем новый объект для работы с АПИ Яндекса (помните костыль ?)
$api        = new YandexAPI($app_id, $app_pass);
$d1         = date('Ymd', time() - 86400); // вчера
$d2         = date('Ymd', time() - 2*86400); // позавчера
$r=$api->LogIn('логин', 'пароле'); // дебилизм
if ($r==false){
    // просто покажем в MEMO на форме все что пришло
    c("log")->text.="Аудентификация не прошла !!!\n";
    c("log")->text.=print_r($api->error,true);
}
else{
    c("log")->text.="Аудентифицировались\n";
    $r=$api->MakeQuery('/stat/content/popular', array(
        'id'    => c("siteId")->text,
        'date1' => $d1,
        'date2' => $d1
        ) );
    if ($r==false){
        c("log")->text.="Запрос не прошел !!!\n";
        c("log")->text.=print_r($api->error,true);
    }else{
        // тут успешный финал, мы получили то что хотели и выбросили в тот же лог все что пришло, дальше делаем с ним что хотим, структуру видно в логе.
        c("log")->text.="Запрос успешен\n";
        c("log")->text.=print_r($api->result,true);
    }
    
}
		

Код легко переработать для консоли или для сайта.

Все кто хотел но боялся начать, пришло время. Пробуйте свои силы, пишите комменты.

Анекдот

Захожу в свою почту на Яндексе. Читаю: Деньги 0 руб.
Лезу в карман — точно. И откуда они это знают?

Статьи из раздела, Видеочат рулетка