Nabídnu malý pohled na to, jak funguje Facebook Graph API a jak se vlastně Ron Bowes snadno dostal k 100 milionům jmen, příjmení, adres profilů a Facebook ID. Uvidíte, že je to extrémně snadné. A nabídnu pár dalších zajímavých triků – jak získat seznam vlastních přátel či seznam členů skupiny a těch co lajkují nějakou stránku. Může se to hodit
Údaje 100 milionů uživatelů Facebooku volně k dispozici vyvolala velký zájem, včetně několika jedinců, kteří stále nechápou, jak to vlastně s těmi údaji je – místo toho aby se podívali na Open Graph API se věnují sprostým mailům. Což se ale na Open Graph API podívat teď společně?
Tak co třeba http://graph.facebook.com/Daniel.Docekal?
{ "id": "570949930", "name": "Daniel Bradbury Dou010dekal", "first_name": "Daniel", "middle_name": "Bradbury", "last_name": "Dou010dekal", "link": "http://www.facebook.com/Daniel.Docekal", "gender": "male", "locale": "en_US" }
Ach ano, přesně tady to máme. Máme tu adresu profilu na Facebooku, jméno, příjmení, prostřední jméno, pohlaví, ID na Facebooku. A taky to, že nesnáším Facebook v češtině a používám ho v angličtině. A tentýž výsledek samozřejmě dostanete, pokud použijete mé ID – tedyhttp://graph.facebook.com/570949930
A co se s numerickým ID dá udělat? No pochopitelně, dá se “inkrementovat”. Takže na http://graph.facebook.com/570949933 najdete dalšího existujícího uživatele v pořadí, na http://graph.facebook.com/570949940 dalšího. A můžete pokračovat. Hodně dlouho pokračovat.
User Feed co by neměl být veřejný
Co dál se dá hezkého zjistit, aniž byste se museli nějak moc namáhat?
Co třeba http://graph.facebook.com/Daniel.Docekal/feed – ideální, najdete tam kompletní přehled všech statusů a odkazů, prostě zeď uživatele. S ohledem na to, že Facebook vzbuzuje představu, že vaše statusy nejsou zcela veřejné, může tohle být docela překvapení. A pochopitelně tam najdete i všechny reakce na vaše příspěvky – čímž snadno můžete začít shromažďovat další jména/příjmení a uživatelská ID.
Ve skutečnost je viditelnost mého “feed” vpořádku – nastavil jsem to tak v nastavení soukromí (zde) – Facebook opravdu respektuje, jakým způsobem si nastavíte tuhle “jednoduchou” tabulku. A pokud si nastavíte vše do “Everyone” polohy, tak se samozřejmě nedivte ničemu.
Ne, přátelé ti (bezprostředně) veřejní nejsou, ale co dalšího je?
http://graph.facebook.com/Daniel.Docekal/friends vypadá také lákavě, přátelé Facebook uživatele – tady už narazíte. Musíte se autentikovat přes OAuth. Což na druhou stranu není nijak složité – můžete si to schválně vyzkoušet.
Kompletní dokumentaci k tomu, co je přístupné v rámci user objektu najdete tady. a dozvíte se tam něco zajímavého, že můžete použít fields pro určení toho, co vlastně chcete vědět. Ne vše bude přístupné, Facebook tady vcelku respektuje to, co si nastavíte v rámci viditelnost. Ale dozvíte se tady taky jaké další connections parametry můžete použít.
V praxi to znamená, že si můžete zkusit napsat skript, který pomocí inkrementace ID bude vybírat https://graph.facebook.com/_ID_/?fields=birthday – a buďte si jistí, že se k datům narození dostanete. Tedy pokud je daný uživatel nastavil jako veřejné.
Zajímavé může být i https://graph.facebook.com/_ID_/likes – přehled toho, co uživatel označil jako Líbí/Like – a dostanete se k seznamu Pages, kde je uživatel lajka (fanoušek).
Co třeba http://graph.facebook.com/Daniel.Docekal/picture – hned zjistíte jaký má uživatel profilový obrázek (ano, to je další veřejná informace na Facebooku).
Tak co s tím OAuth a Access Token?
Co třeba http://app.apigee.com/console/facebook – užitečná služba pro testování podobných věcí.
Pak už stačí jenom https://graph.facebook.com/Daniel.Docekal/friends (a zvolit OAuth autentikaci). Užitečné, dá se tak získat vlastní přehled “přátel”. Na “cizí” přátele to totiž nefunguje – Can’t lookup all friends of 1185277881; can only lookup for the logged in user (570949930) or for pairs of users
Takže ani tudy cesta k seznamu přátel nevede, aspoň něco je na tom Facebooku jisté.
A co Facebook Pages?
Nezapomeňte, Facebook Page (stránka) je veřejně přístupný objekt. Takže například https://graph.facebook.com/pooh.cz vede k základním údajům o POOH.CZ Facebook Page (což je samozřejmě totéž jako https://graph.facebook.com/73853464545 – i zde fungují ID, jsou totiž společná pro jakékoliv objekty).
Pak už snadno zjistíte, že https://graph.facebook.com/73853464545/feed může být extrémně užitečné, pokud chcete dostávat ze své Page data někam jinam – geniální export. Ale při bližším pohledu i zde najdete komentáře – takže je možné snadno dolovat další data o uživatelích.
Přes ně se pak můžete dostat k jejich údajům – jeden příklad za všechny (Marek Fiala nechť promine, ale toto jsou veřejně dostupné údaje a Marek by možná mohl svůj účet nastavit lépe). Respektive, jsou veřejné pro kohokoliv přihlášeného k Facebooku (Marek Fiala není v mých přátelích):
{ "id" : 1425322613, "name" : "Marek Fiala", "first_name" : "Marek", "last_name" : "Fiala", "link" : http://www.facebook.com/profile.php?id=1425322613, "birthday" : "04/07/1985", "hometown": { "id" : 103072199732335, "name" : "Polná" }, "work": [ { "employer": { "id" : 114252701922688, "name" : "Superhosting" }, "location": { "id" : 108210209207966, "name" : "Prague" }, "position": { "id" : 114977041850318, "name" : "Programator" }, "start_date" : "0000-00" } ], "education": [ { "school": { "id" : 110610612299901, "name" : "ČVUT FEL" }, "year": { "id" : 111149032238763, "name" : "2009" }, "concentration": [ { "id" : 106712489365591, "name" : "Výpočetní technika" } ] }, { "school": { "id" : 106422206061441, "name" : "SPŠ Jihlava" }, "year": { "id" : 108364149197254, "name" : "2004" } } ], "gender" : "male", "locale" : "en_US", "updated_time" : "2009-05-18T20:55:12+0000" }
Uplně stejně se dá dostat k obsahu Group/Skupiny – stačí znáte její číslo – https://graph.facebook.com/188175849611/feed vede na “Windows 7 Tips and Tricks (POOH.CZ)” – s jedním rozdílem, budete potřebovat OAuth autentikaci. Daleko zajímavější ale budehttps://graph.facebook.com/188175849611/members – jistě chápete, že přístup k seznamu členů Skupiny je … no prostě fajn.
A https://graph.facebook.com/73853464545/members potom, vcelku očekávatelně umožňuje získat seznam členů Page/Stránky (OAuth požadováno). Ale pokud byste si třeba dělali iluzi, že je nutné být fanouškem, tak to opravdu není. https://graph.facebook.com/MediaTimes.cz/members ochotně poskytne seznam členů (Facebook jméno, Facebook ID), aniž bych byl fanouškem.
Vyhledávání v Open Graph
S pomocí https://graph.facebook.com/search?q=QUERY&type=OBJECT_TYPE
můžete objekty v Open Graph databázi proheldávat, OBJECT_TYPE je post, user, page, event či group. Nenabízí se sice wildcards podpora, ale přesto jde o velmi užitečnou pomůcku.
Co je ale například zajímavé, že https://graph.facebook.com/search?q=Dočekal&type=user vrací spoustu výsledků, které vypadají jako nijak nesouvisející s “Dočekal” – po bližším zkoumání zjisíte, že ačkoliv hledáte ve jméně, vyhledávají se i některá další políčka (například přezdívka).
Vyhledávání je užitečné i v podobě hledání ve všech veřejných statusech – například https://graph.facebook.com/search?q=facebook&type=post, aby bylo jasno, jak to vlastně vypadá. Opět zde můžete najít dostatek jmen a ID uživatelů, kteří na takovéto statusy reagovali.
Užitečná pomůcka
Jakub Pajer mi dal další tip na hodně užitečnou pomůcku – na http://zesty.ca/facebook najdete velmi užitečný “browser” v Open Graph objektech.