Для некоторых из вас API Яндекс Метрики покажется чем-то ужасным и непддающимся. На самом деле если использовать некий костыль, то Все будет намного чудесней и проще.
Меня всегда гнобила мысль о том что надо аудентифицироваться, а это честно говоря первый шаг который сносил мне голову. То ли дело АПИ Betamax, где в каждом запросе передются логин и пароль. У Яндекса нужно передавать некий Токен (впрочем это классика).
Чтобы получить Токен надо аудентифицироваться.
И тут вся эта схема становится похожа на большую неповоротливую поросюшку.
Нужно:
А перед этим нужно получить id и пароль приложения в Админке Яндекса (единоразово)
Согласитесь: «Чужие для Хищников»
но хватит вас кошмарить.
Я писал свое первое приложение для работы с АПИ Метрики на DevelStudio [ http://develstudio.ru/ ] (т.е. на PHP GUI). Я вообще обожаю этот проект и все свои наработки я делаю именно в нем, потому что это обалденный инструмент для прототипов (простых приложений).
Это как Дельфи, но PHP и в 100 раз проще. Грусное тут только одно, автор DevelStudio слился и не желает более развивать проект, а пишет какие-то совершенно малополезные для большинства вещи на Java. Грусть аттакуэ.
Итак хватит грустить и поедем к АПИ Метрики.
У нас должно быть:
Теперь о костыле который поможет вам без тошноты провести все проклятые аудентификации. Это просто 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); } }
Код легко переработать для консоли или для сайта.
Все кто хотел но боялся начать, пришло время. Пробуйте свои силы, пишите комменты.