FQL

S Vikipedije, slobodne enciklopedije

FQL (Facebook Query Language) spada u grupu upitnih jezika koji omogućava Facebook korisnicima da koriste SQL[1] upite za podatke izložene od Graph API-ja. FQL pruža napredne funkcije koje nisu dostupne u Graph API-ju.[2] Podaci vraćeni od FQL upita su po podrazumevanom JSON formatu. Dokumentacija o FQL je javno dostupna svima te ovaj jezik može svako da nauči.

FQL nudi mogućnost pretrage javno dostupnih podataka na Facebook-u, a efekat je isti kao pri korišćenju Graph API-ja. Međutim, FQL se neće koristiti posle verzije 2.0 Facebook API-a, nakon čega se programerima preporučuje da pređu na korišćenje Graph API-a.

Karakteristike[uredi | uredi izvor]

Iako su isti podaci dostupni putem neke od API funkcija, ovako je omogućen jednostavniji, selektivni i brži pristup. Nema potrebe za traženjem odgovaraćuje API funkcije, dohvatanja svih dostupnih podataka iz određene kategoije i zatim programske obrade i selekcije korisnih podataka. Ovako na jedinstven način imamo pristup svemu i uz malo složenije upite znatno smanjujemo količinu podataka s kojom moramo raditi.

Istorija[uredi | uredi izvor]

FQL prvi put postao javno dostupan u februaru 2007. godine [3]

Upiti[uredi | uredi izvor]

Upiti su sledećeg oblika:

SELECT [polja] FROM [tabela] WHERE [uslovi]

Za razliku od SQL-a, FQL omogućava samo SELECT upite, bez UPDATE i DELETE, takođe FROM klauzula mođe da sarži samo jednu tabelu što znači da se ne može realizovati JOIN. Možete da koristite ključnu reč IN u klauzulama SELECT i WHERE kako biste radili sa uglježdenim upitima. U WHERE klauzuli moguće je postavljati uslove vezane za indeksirana polja, ta polja su u spisku polja označena sa '*'.

FQL poseduje:

  • mogućnost obavljanja osnivnih matematičkih operacija
  • AND i NOT logičke operatore
  • ORDER BY i LIMIT klauzule(ORDER BY klauzula se dodaje na kraju upita i može da sadrži samo jedno polje)

Za svaki upit koji uzima uid može se proslediti me(), koji vraća prijavljenog korisnika.

Primer:

SELECT name FROM user WHERE uid = me()

Ostale dostupne funkcije su:

  • now()
  • strlen()
  • substr()
  • strpos()

Primer upita koji dohvata sve informacije o korisniku za aktivne korisnike i prijatelje:

SELECT uid, name, pic_square FROM user WHERE uid = me()

OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

Višestruki upiti[uredi | uredi izvor]

Višestruki upiti (eng. multi-query) obrađuju seriju FQL upita u jednom i vraćaju podatke za svaki jedan po jedan.

Ova metoda uzima JSON-enkodirane rečnike koji se nazivaju „upiti“ gde pojedinačni upit koristi sintaksu kao jednostavni upit. Međutim, ova metoda omogućava da se kreiraju kompleksniji upiti. Mogu se dohvatiti podaci u jednom upitu i koristiti u drugom, u istom pozivu. WHERE klauzula je opciona u drugom upitu, pošto se referencira na podatke koji su već dohvaćeni. Da bi se referencirali na rezultate upita u drugom upitu u okviru istog poziva, potrebno je u FROM klauzuli specificirati njegovo ime koje se navodi nakon znaka #.

Na primer, potrebno je uzeti neke podatke o korisniku koji prisustvuje nekom događaju. Uobičajeno bi bilo da se izvrše dva upita, jedan za drugim, čekajući na rezultat prvog upit, pošto drugi upit zavisi od podataka prvog. Međutim, sa FQL multyquery, mogu se oba upita pokrenuti u isto vreme, rezultati se dobijaju kada je potrebno, i na taj način obezbeđuju se se bolje performanse nego kad se pokreće serija upita. Prvo je potrebno koristiit ID i RSVP status (fr. RSVP - répondez s'il vous plaît, , tj. en please respond, molim odgovorite) svakog gosta, tako da može da se formuliše prvi upit, query1. Ovo se izvršava na sledeći način:

"query1":"SELECT uid, rsvp_status FROM event_member WHERE eid=12345678"

Nakon toga se uzimaju podaci profila svakog gosta (name, URL, i slika), a zatim se izvršava drugi upit – query2 – koji se referencira na rezultate prvog upita, query1. Query2 se formuliše na sledeći način:

"query2":"SELECT name, url, pic FROM profile WHERE id IN (SELECT uid FROM #query1)"

Trenutni izgled FQL-a na Fejsbuku

Evo primera pokretanja FQL upita:

<?php

$app_id = 'YOUR_APP_ID';

$app_secret = 'YOUR_APP_SECRET';

$my_url = 'POST_AUTH_URL';

$code = $_REQUEST["code"];

// auth user

if(empty($code)) {

$dialog_url = 'https://www.facebook.com/dialog/oauth?client_id='

. $app_id . '&redirect_uri=' . urlencode($my_url) ;

echo("<script>top.location.href='" . $dialog_url . "'</script>");

}

// get user access_token

$token_url = 'https://graph.facebook.com/oauth/access_token?client_id='[mrtva veza]

. $app_id . '&redirect_uri=' . urlencode($my_url)

. '&client_secret=' . $app_secret

. '&code=' . $code;

// response is of the format "access_token=AAAC..."

$access_token = substr(file_get_contents($token_url), 13);

// run fql query

$fql_query_url = 'https://graph.facebook.com/'[mrtva veza]

. 'fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()'

. '&access_token=' . $access_token;

$fql_query_result = file_get_contents($fql_query_url);

$fql_query_obj = json_decode($fql_query_result, true);

// display results of fql query

echo '

' 

print_r("query results:");

print_r($fql_query_obj);

echo '

';

// run fql multiquery

$fql_multiquery_url = 'https://graph.facebook.com/'[mrtva veza]

. 'fql?q={"all+friends":"SELECT+uid2+FROM+friend+WHERE+uid1=me()",'

. '"my+name":"SELECT+name+FROM+user+WHERE+uid=me()"}'

. '&access_token=' . $access_token;

$fql_multiquery_result = file_get_contents($fql_multiquery_url);

$fql_multiquery_obj = json_decode($fql_multiquery_result, true);

// display results of fql multiquery

echo '

'

print_r("multi query results:");

print_r($fql_multiquery_obj);
 
echo '

'; ?>

Namena[uredi | uredi izvor]

FQL se koristi za upite nad tabelama Facebook-a koje su otvorene, kao što su:

Ime Opis
album album fotografija ili video snimaka predstaljene u FQL
application aplikacija predstavljena u FQL
apprequest FQL tabela koja sadrži poslate zahteve preko aplikacije
comment Komentari u vezi sa jednim ili više fejsbuk komentarima

predstavljeni u FQL

cookies Spisak kolačića koji su postavljeni za korisnika u FQL
developer FQL tabela koja predstavlja uloge korisničke aplikacije
у App Dashboard. Уместо тога користите app_role
event FQL tabela koja daje informacije o događaju
event_member Sadrži listu učesnika za događaj u FQL
family Sadrži detaljne informacije o korisnikovoj porodici
friend FQL tabela koja se može koristiti da vrati spisak

korisnikovih prijatelja ili da pokaže da li su dva korisnika prijatelji

friendlist_member FQL tabela koja pokazuje da li je korisnik

član liste prijatelja

friend_request FQL tabela koja pokazuje nerešene zahteve od

strane korisnika trenutne sesije

group Grupa kojoj korisnici mogu da se pridruže
group_member Sadrži listu članova za grupe u FQL
insights FQL tabela koja sadrži statističke podatke o prijavama,

stranicama i domenima sa 30 ili više veza.

like FQL tabela koja daje ID korisnka koji je lajkovao objekat

(video, sliku, belešku, vezu ili album)

link FQL tabela koja sadrži linkove koje je korisnik objavio
link_stat FQL tabela koja pokazuje kako su korisnici u interakciji

na Fejsbuku sa datim linkom

mailbox_folder FQL tabela koja sadrži informacije o korisnikovom

poštanskom sandučetu

message Informacija o porukama predstavljena u FQL. Da biste pristupili

ovoj tabeli potreban vam je pristupni token sa read_mailbox dozvolama

notification Trenutne notifikacije korisnika predstavljene u FQL
offer FQL tabela koja daje informacije o ponudama sa objava stranica
page Za pristup na nivou država koristite page_fans_country

i page_storytellers_by_country

Vidi još[uredi | uredi izvor]


Reference[uredi | uredi izvor]

  1. ^ „Facebook Query Language (FQL)”. Documentation. Facebook. Arhivirano iz originala 17. 07. 2011. g. Pristupljeno 16. 12. 2010. 
  2. ^ „About Facebook-FQL”. Tag info. Stack Overflow. Pristupljeno 18. 5. 2012. 
  3. ^ Steinberg, Ari (26. 2. 2007). „Facebook Query Language (FQL)”. The Facebook Blog. Facebook. Pristupljeno 18. 5. 2012. 

Literatura[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]