Facebook není z pohledu vývojáře webu jen o tom, že si na něj třemi způsoby (iframe, HTML5, XFBML) umístíte lajkovací tlačítko a box. Existuje celá řada dalších způsobů, jak webovou stránku s Facebookem propojit.
Jedním z takových propojení na Facebook je speciální dotazovací jazyk FQL - Facebook Query Language. Můžete jej používat k získávání informací o počtu kliknutí na Líbí se Ti, počtu sdílení, celkovém součtu těchto čísel a o mnoha dalších věcech.
Když se podíváte na domovskou stránku FQL, uvidíte tam přehled jednotlivých tabulek. Každou z nich si můžete rozkliknout a uvidíte seznam jejích sloupečků, spolu s vysvětlením, jaké informace se v nich nacházejí.
Podívejte se například na tabulku link_stat. Obsahuje informace o tom, jak je nějaká URL na Facebooku oblíbená. Získáte z ní všechny informace, které jsem uvedl výše.
Prakticky v PHP: jak získat data o oblibě stránky z Facebooku pomocí FQL
Podívejme se tedy, jak použití FQL funguje v praxi. Pomocí FQL si sestavíte příslušný dotaz. Následně jej Facebooku odešlete metodou HTTP GET, tedy jednoduše zavoláním URL se zakomponovaným dotazem. Facebook vám pak vrátí XML s informacemi, které požadujete.
<?php $url = 'https://www.maxiorel.cz/'; $fql = 'SELECT like_count, share_count, click_count, comment_count, total_count from link_stat where url="'.$url.'"'; $query_url = 'https://api.facebook.com/method/fql.query?query='.urlencode($fql); $result = simplexml_load_file($query_url); print 'Počet lajků: '.$result->link_stat->like_count.'<br/>'; print 'Počet sdílení: '.$result->link_stat->share_count.'<br/>'; print 'Počet komentářů: '.$result->link_stat->comment_count.'<br/>'; print 'Celková obliba: '.$result->link_stat->total_count.'<br/>'; print 'Počet kliknutí z Facebooku: '.$result->link_stat->click_count.'<br/>'; ?>
Krátké vysvětlení k výše uvedenému kódu pro méně znalé PHP. Nejprve přiřadíme požadovanou URL do proměnné $url. Do proměnné $fql spojíme dotaz a připravenou URL, aby Facebook věděl, na jakou adresu se jej ptáme.
Připravený dotaz v proměnné $fql zakódujeme funkcí urlencode() tak, aby šel zadat coby URL adresa (tj. uvozovky a další znaky se převedou na HTML entity) a finálně připravenou adresu pro volání vložíme do proměnné $query_url.
S využitím simplexml_load_file() kde předáme adresu vracející XML s požadovanými informacemi, získáme objekt s XML výstupem z Facebooku. Poté už jen stačí získaná data vypsat v nějaké formě do prohlížeče.
Uvedený kus PHP kódu můžete vložit do těla nějaké webové stránky, proměnnou $url naplnit její adresou a při načtení tak hned sledovat získaná data. Upozorňuji ale, že nevím, kolik volání za den vám Facebook dovolí.
Dotazování na Facebook pomocí FQL v JavaScriptu
Nyní se podívejme na jednoduchý příklad volání FQL v JavaScriptu. Ne vždy budete chtít, aby se data zobrazila hned po načtení stránky. S pomocí JavaScriptu můžete nechat tyto informace zobrazit třeba po stisku nějakého tlačítka na stránce.
Připravte si tedy jednoduchou strukturu HTML, do které vložíte jedno tlačítko s id=tlacitko. Dále do dokumentu napojte jQuery. Pomocí $(document).ready() zpracujete přiřazení události kliknutí na tlačítko a vytvoříte obsluhu této události.
Podobně jako v ukázce s PHP si nyní připravte proměnné s URL, dotazem FQL a finálně sestrojenou adresou, která vrátí XML data z Facebooku. Připravte konstrukci $.ajax(), ve které připravenou adresu s výsledky v XML zavoláte a v případě úspěšného volání projdete získaná data. V příkladu získané informace prostě po stisku tlačítka zapíšu do těla stránky.
Celá ukázka kódu HTML stránky s voláním FQL pomocí JavaScriptu je zde:
<!DOCTYPE html> <html> <head> <title>Ukázka použití FQL</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="jquery.js"></script> <script> $(document).ready(function(){ $('#tlacitko').click(function(){ var $url = 'https://www.maxiorel.cz/'; var $fql = 'SELECT like_count, share_count, click_count, comment_count, total_count from link_stat where url="'+$url+'"'; var $query_url = encodeURI('https://api.facebook.com/method/fql.query?query='+$fql); $.ajax ( { type: "GET", url: $query_url, dataType: "xml", success: function(xml) { $(xml).find('link_stat').each ( function() { var likes = $(this).find('like_count').text(); var shares = $(this).find('share_count').text(); var clicks = $(this).find('click_count').text(); var comments = $(this).find('comment_count').text(); var total = $(this).find('total_count').text(); $(document.body).append('<p>Líbilo se: '+likes+'x</p>'); $(document.body).append('<p>Sdíleno: '+shares+'x</p>'); $(document.body).append('<p>Kliknutí: '+clicks+'x</p>'); $(document.body).append('<p>Komentáře: '+comments+'x</p>'); $(document.body).append('<hr>'); $(document.body).append('<p>Celkem: '+total+'</p>'); } ); } } ); }); }) </script> </head> <body> <input type="button" value="Získat data z Facebooku" id="tlacitko" /> </body> </html>
Pomocí FQL se Facebooku samozřejmě můžete dotazovat na celou řadu jiných věcí, nejenom statistik pro danou URL. Doporučuji prostudovat seznam všech tabulek a příkladů na domovské stránce FQL.
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.
Přidat komentář