Graph API jest filarem na którym opiera się działanie Facebooka jako portalu społecznościowego. Dokładnie jest to interfejs programistyczny wiążący wszystkie elementy występujące na stronie w spójną całość. Jest to możliwe, ponieważ każde zdjęcie, osoba, wydarzenie czy komentarz reprezentowana jest jako obiekt o określonych właściwościach. W zależności od ustawień prywatności i od tego czy uzyskamy pozwolenie możemy ich widzieć więcej lub mniej.
Aby możliwe było utworzenie powiązań (np. przypisanie albumu ze zdjęciami konkretnemu użytkownikowi) każdy obiekt posiada swój unikalny numer ID.
Aby pobrać informacje o takim obiekcie musimy zmodyfikować specjalny adres URL serwera, który je przechowuje. Zobaczmy kilka przykładów.
Aby możliwe było utworzenie powiązań (np. przypisanie albumu ze zdjęciami konkretnemu użytkownikowi) każdy obiekt posiada swój unikalny numer ID.
Aby pobrać informacje o takim obiekcie musimy zmodyfikować specjalny adres URL serwera, który je przechowuje. Zobaczmy kilka przykładów.
http://graph.facebook.com/ID
http://graph.facebook.com/username
http://graph.facebook.com/username
Graf profilu Marka Zuckerberga, założyciela portalu (o numerze ID 68310606562), dostępny jest pod adresem http://graph.facebook.com/68310606562 i wygląda następująco:
{
"id": "68310606562",
"name": "Mark Zuckerberg",
"picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/
50270_68310606562_2720435_s.jpg",
"link": "http://www.facebook.com/markzuckerberg",
"likes": 4538132,
"category": "Public figure",
"website": "www.facebook.com",
"username": "markzuckerberg",
"personal_interests": "openness, making things that help
people connect and share what's important to them,
revolutions, information flow, minimalism\n\n\n"
}
Zamiast numeru ID możemy przekazać nazwę username obiektu (czyli do wspomnianego wyżej przykładu dostaniemy się poprzez adres http://graph.facebook.com/markzuckerberg). Dla przykładu - graf mojego fanpage-u zrzeszającego ludzi, którym podoba się idea Facebookowym pieczątek (https://graph.facebook.com/PieczatkiLubieTo) wygląda w taki sposób:
Obiekty są ze sobą w jakiś sposób powiązane. Dzieje się tak kiedy np. użytkownik lubi pewną stronę, uczestniczy w wydarzeniu, jest w związku z innym użytkownikiem, bądź po prostu ma go w znajomych. W omawianym "socjalnym grafie" relacja ta nazwana jest połączeniem. Możemy badać takie "połączenia" elementu z numerem ID z innymi elementami jak np:
Zdjęcia
W łatwy sposób możemy także generować zdjęcia (np. profilowe, wydarzeń, grup, stron, aplikacji...). Wystarczy stworzyć zapytanie zgodne ze schematem
Zdjęcia możemy sobie renderować według wymagań dzięki parametrowi type. Domyślnie jest to kwadrat (square) o boku 50px. Możemy wybierać między small (50px szerokość, wysokość zmienna), normal (100px szerokość, wysokość zmienna) oraz large (200px szerokość, wysokość zmienna).
{
"id": "129613800426235",
"name": "Piecz\u0105tki \"Lubisz to\"",
"picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4
/41607_129613800426235_5059275_s.jpg",
"link": "http://www.facebook.com/PieczatkiLubieTo",
"likes": 1401,
"category": "Product/service",
"website": "www.polubisz-to.pl\nhttp://allegro.pl/
show_user_auctions.php?uid=1761089",
"username": "PieczatkiLubieTo",
"company_overview": "Ty te\u017c jeste\u015b Facebook-o-
-holikiem tudzie\u017c Facebook-o-holiczk\u0105? \n\nTe\u017c
czasami a\u017c chcesz oznaczy\u0107 co\u015b swoim \"Lubi\u0119
to\" w realu?\n\nTeraz masz tak\u0105 mo\u017cliwo\u015b\u0107...\n\n
Piecz\u0105tk\u0105 \"Lubisz to\" mo\u017cesz oznaczy\u0107 dos\u0142ownie
wszystko. Tylko od Twojej kreatywno\u015bci i wyobra\u017ani zale\u017cy,
co to b\u0119dzie. \n\nCzekamy na Twoje pomys\u0142y, zdj\u0119cia, filmy
- poka\u017c \u015bwiatu, co naprawd\u0119 lubisz!",
"products": "Kieszonkowe stemple Pocket Stamp z Twoim imieniem i nazwiskiem
lub pseudonimem oraz znaczkiem \"lubisz to\""
}
Odpowiedzi te są obiektami JSON. Możemy je wygenerować dla wszystkich obiektów w portalu (m.in. dla zdjęć, albumów, zdjęć profilowych, grup, aplikacji, statusów, stron...). Jak widać zawierają tylko podstawowe i ogólnie dostępne informacje do których dostęp ma nawet osoba nie posiadająca konta na Facebooku. Informacje te są powszechnie dostępne.Obiekty są ze sobą w jakiś sposób powiązane. Dzieje się tak kiedy np. użytkownik lubi pewną stronę, uczestniczy w wydarzeniu, jest w związku z innym użytkownikiem, bądź po prostu ma go w znajomych. W omawianym "socjalnym grafie" relacja ta nazwana jest połączeniem. Możemy badać takie "połączenia" elementu z numerem ID z innymi elementami jak np:
- znajomymi
https://graph.facebook.com/ID/friends?access_token=... - najnowszą aktywnością znajomych (news feed)
https://graph.facebook.com/ID/home?access_token=... - wpisami na ścianie
https://graph.facebook.com/ID/feed?access_token=... - lubianymi rzeczami
https://graph.facebook.com/ID/likes?access_token=... - filmami
https://graph.facebook.com/ID/videos/uploaded?access_token=... - muzyką
https://graph.facebook.com/ID/music?access_token=... - książkami
https://graph.facebook.com/ID/books?access_token=... - notatkami
https://graph.facebook.com/ID/notes?access_token=... - znacznikami na zdjęciach
https://graph.facebook.com/ID/photos?access_token=... - albumami
https://graph.facebook.com/ID/albums?access_token=... - wydarzeniami
https://graph.facebook.com/ID/events?access_token=... - grupami
https://graph.facebook.com/ID/groups?access_token=... - .....
Zdjęcia
W łatwy sposób możemy także generować zdjęcia (np. profilowe, wydarzeń, grup, stron, aplikacji...). Wystarczy stworzyć zapytanie zgodne ze schematem
http://graph.facebook.com/ID/picture
http://graph.facebook.com/username/picure
Zdjęcia możemy sobie renderować według wymagań dzięki parametrowi type. Domyślnie jest to kwadrat (square) o boku 50px. Możemy wybierać między small (50px szerokość, wysokość zmienna), normal (100px szerokość, wysokość zmienna) oraz large (200px szerokość, wysokość zmienna).
Przykład:
Jeśli chcemy, aby zdjęcie było zwrócone bezpiecznym protokołem SSL, dodajemy argument return_ssl_resources.
Przykład:
Zapytania
Możemy tworzyć bardziej zaawansowane zapytania, które nie będą zwracały wszystkich informacji o obiekcie, tylko te o które sami poprosimy. Robi się to dodając argument fields z nazwami pól oddzielonymi przecinkami, które chcemy otrzymać.
Zwróci:
Warto wiedzieć także o identyfikatorze me, który zwraca informacje o aktywnym użytkowniku.
Możemy tworzyć bardziej zaawansowane zapytania, które nie będą zwracały wszystkich informacji o obiekcie, tylko te o które sami poprosimy. Robi się to dodając argument fields z nazwami pól oddzielonymi przecinkami, które chcemy otrzymać.
Zwróci:
{
"id": "68310606562",
"name": "Mark Zuckerberg",
"category": "Public figure"
}
Do jednego zapytania możemy dołączyć prośbę o inne obiekty. Służy do tego argument ids. Przykład niżej zwróci publiczne informacje o Marku Zuckerbergu i o fanpage-u 50 centa.Warto wiedzieć także o identyfikatorze me, który zwraca informacje o aktywnym użytkowniku.
Wyszukiwanie i filtrowanie
Tworząc zapytania, możemy ograniczać liczbę zwracanych wyników. Służą do tego zmienne limit i offset.
https://graph.facebook.com/me/likes?access_token=...&limit=3
Zapytanie to zwróci trzy ostatnio polubione przez nas rzeczy. Aby odnieść się do kolejnych trzech należy dodać offset czyli przesunięcie.
https://graph.facebook.com/me/likes?access_token=...&limit=3&offset=6
Bardzo ciekawą opcją jest wyszukiwarka. Zwraca ona wszystkie obiekty, które zawierają w sobie wyszukiwaną frazę. Wyszukiwanie ogranicza się przedziałami czasowymi (za pomocą argumentów since i until po którym podany jest czas zgodny z funkcją strtotime()) a szukaną frazę podaje się za argumentem q (ang. query).
http://graph.facebook.com/search?until=yesterday&q=gruby
To zapytanie wyświetli wszystko umieszczone przez użytkowników na portalu (np jako statusy, komentarze pod zdjęciami, nazwy filmów...) które zawiera w sobie słowo 'gruby' i zostało umieszczone nie wcześniej niż wczoraj.
Na każdej zwróconej przez wyszukiwarkę stronie umieszczone jest 25 obiektów, przeglądając je dochodzimy do linijek umożliwiających dalsze przeglądanie
"paging": {
"previous": "https://graph.facebook.com/search?q=gruby&access_token=...
&paging=next&limit=25&since=1308956406",
"next": "https://graph.facebook.com/search?q=gruby&access_token=...
&paging=next&limit=25&until=1308285693"
}
Są to pola obiektu JSON więc implementacja w kodzie nie jest problemem.
Możemy także sprecyzować jakiego typu wyniki nas interesują. Służy do tego parametr type, który aktualnie obsługuje takie wyniki jak posty (post), użytkownicy (user), strony (page), wydarzenia (event), grupy (group), miejsca (place). Przykładowe zapytanie wyszukujące użytkownika nazywającego się Norbert
https://graph.facebook.com/search?q=norbert&type=user
Brak komentarzy:
Prześlij komentarz