Mostanában az unalmas busz utakat azzal hidalom át, hogy leporolom a fejlesztő énemet. Konkrétan a facebook alkalmazásfejlesztésbe ásogatom magam bele, de ezt már tudjátok.
Nem akarok most itt tutoriálokat írni, tényleg csak felskiccelem egy adott út mozzanatait. Bele is vágnék akkor:
[Pécs]
Készítettem magamnak egy demó alkalmazást, ebbe próbálok összelapátolni egy saját framework szerű dolgot. A következő feladatot állítottam fel magamnak: lekérdezni az aktív user (aki éppen használja az alkalmazást) ismerőseinek adatait egy bizonyos szempont szerint. Jelen esetben legyen ez a nem, mondjuk ki akarom listáztatni csak a lány ismerősöket.
Az aktív user ismerőseinek adatait pofon egyszerű lekérdezni:
$friends = $facebook->api('/me/friends?token='.$session['access_token']);
Az eredmény egy JSON objektum lesz, de ez csak az ismerősök nevét és id-jét tartalmazza, az adott ember nemét történetesen nem. Arra indulok el, hogy megvannak az ismerősök id-jei. Ez alapján egynként lekérdezem mindenkinek a nemét, és ha lány akkor felveszem egy tömbbe…
[Kozármisleny]
Egy adott user adateinak érszletes lekérdezésére vagy a graph API használjató, vagy pedig FQL lekérdezést kell kalapálni…
[Kozármisleny után]
Az FQL-lel kezdtem el próbálkozni. Az elgondolásom az volt, hogy egy ciklusban lekérdezem egyenként a barátok nemét. Csakhogy a facebook nagyon finnyás, ilyen otrombaságot connection timeoutol. Én sem gondoltam, hogy elegáns 200+ lekérdezést külön külön megcsinálni, iszonyatos felesleges terhelést róna ez a szerverre. Hát a facebook szűri is okosan az ilyen bénázást. Elkezdem megnézni a graph API-t (ez amúgy is szimpatikusabb)…
[Szederkény]
Meg is van. A graph API-val van lehetőség arra, hogy felsorolom a user id-ket és megadom az adatlapjuk melyik mezőjére vagyok kíváncsi és ő visszaadja ezt. Azt hiszem ez jó lesz…
[Lánycsók]
Ó ez nem jó. Ez a rest API. A tesztkonzolban tök jól működik de a hívás módja más. A rest API nem lesz támogatva, nem érdemes vele foglalkozni. Graph API-s megoldás kell….
[Mohács]
Megvan egy adott kódú user néhány alap adatainak lekérése graph API-val. Az adatok közt szerepel a nem. Szupi. Na most kíváncsi leszek ezt tudom-e ciklusban futtatni…
…úgy néz ki nem lehet. Egyszerre kell átadnom a user id-ket… na akkor most google…
[Mohács]
Graph API-val ezt NEM lehet lekérdezni. Óriási LOL és faszkorbács a fejlesztőknek. És a megoldás…. igen, FQL. Csak épp nem külön-külön lekérdezésekkel cikluson belül, hanem egyetlen egymásba ágyazott lekérdezéssel…
[Bár]
Megvan.
SELECT uid, name, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())
[Alsónyék]
Mohácstól eddig pihentem. Nem volt net… de most folytköv…
[Pörböly]
Az FQL lekérdezés eredménye egy többdimenziós tömbb. Ezt kicsit letisztázva máris rendelkezésünkre állnak hölgy ismerőseink kódjai és nevei:
$lanyokSzama = 0;
for($i=0; $i count($fqlResult); $i++){
if($fqlResult[$i]['sex'] == 'female'){
$lanyok[$lanyokSzama]['id'] = $fqlResult[$i]['uid'];
$lanyok[$lanyokSzama]['nev'] = $fqlResult[$i]['name'];
$lanyokSzama++;
}
}
Küldetés teljesítve, köszönöm a tapsokat.
Bejegyzések // Kommentek.