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ář