51

Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu
Page 2: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Idź do

• Spis treści• Przykładowy rozdział• Skorowidz

• Katalog online

• Dodaj do koszyka

• Zamów cennik

• Zamów informacjeo nowościach

• Fragmenty książekonline

Helion SAul. Kościuszki 1c44-100 Gliwicetel. 32 230 98 63e-mail: [email protected]© Helion 1991–2011

Katalog książek

Twój koszyk

Cennik i informacje

Czytelnia

Kontakt

• Zamów drukowanykatalog

Facebook Graph API.Tworzenie rozbudowanychrozwiązań we FlashuAutor: Michael James Williams

Tłumaczenie: Łukasz Schmidt

ISBN: 978-83-246-3381-4

Tytuł oryginału: Facebook Graph API Development with Flash

Format: 170×230, stron: 288

Graph API – Lubię to!• Jak wykorzystać potencjał 500 milionów użytkowników?

• Jak zarejestrować własną aplikację na Facebooku?

• Jakie możliwości kryje ActionScript 3SDK for Facebook Platform?

Ponad 500 milionów użytkowników, spędzających 700 000 000 000 minut miesięcznie na jednej

witrynie. O czym mowa? O serwisie Facebook! Jego potencjał doceniła niejedna firma.

Zastanawiasz się, jak dołączyć do tego grona? Jak zdobyć popularność, fanów i być może zarobić?

Uwierz, że to nic trudnego! Facebook udostępnia bogate API, dzięki któremu bez problemu

zintegrujesz się z witryną facebook.com.

W tej książce wiedza jest na wyciągnięcie ręki. W trakcie lektury nauczysz się korzystać

z dostarczonych funkcji przy użyciu ActionScript 3 SDK for Facebook Platform. Dowiesz się, jak

zarejestrować swoją aplikację, uwierzytelniać użytkowników oraz żądać uprawnień rozszerzonych.

Ponadto zobaczysz, jak korzystać z wyszukiwarki, wykrywać błędy oraz publikować wiadomości

na tym portalu społecznościowym. Książka ta jest idealną pozycją dla każdego fana Facebooka

posiadającego zacięcie programistyczne. Sprawdzi się także doskonale w rękach profesjonalistów

chcących stworzyć nowe narzędzia lub gry dla portalu Facebook. Polub to!

• Zalety i wady Facebooka

• Wybór hostingu WWW

• Dostęp do Graph API poprzez przeglądarkę

• Pobieranie informacji ze strony za pomocą ActionScript 3

• Rejestracja aplikacji na Facebooku

• Uwierzytelnianie za pomocą ActionScript 3

• Uzyskiwanie rozszerzonych uprawnień

• Pobieranie i stronicowanie wyników

• Wykorzystanie wyszukiwarki

• Pisanie w feedzie użytkownika

• Publikowanie sformatowanych postów

• Dodawanie i usuwanie oznaczenia „Lubię to!”

• Obsługa notatek i wydarzeń

• Tworzenie stron, grup, aplikacji i wideo

• Język FQL

Dotrzyj do milionów użytkowników serwisu Facebook!

Page 3: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Spis tre�ci

O autorze 9

O recenzencie 11

Wst�p 13

Rozdzia� 1. Wprowadzenie 17

Dlaczego Facebook jest taki dobry? 17Facebook jest popularny 18

Liczby 19Facebook jest wsz�dzie 19Programowanie dla Facebooka jest ciekawe 21

Hosting WWW 21Co to jest host WWW? 21Dlaczego potrzebny jest host WWW? 22Jak wybra� host? 22Przydatne oprogramowanie 23A co z nazwami domen? 23

Jaka znajomo�� AS3 jest wymagana? 24Kod �ród�owy 25

Nap�dzany przez… 27Wykrywanie b��dów 27

Uwa�aj na przechowywanie w pami�ci podr�cznej 28Uwaga ko�cowa 30

Rozdzia� 2. Witaj w Graphie 31

Dost�p do Graph API poprzez przegl�dark� 31Czas zacz�� dzia�a� — �adowanie strony 32Korzystanie z Graph API za pomoc� AS3 34Czas zacz�� dzia�a� — pobieranie informacji ze strony za pomoc� AS3 35

Page 4: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Spis tre�ci

4

Czas zacz�� dzia�a� — deserializowanie obiektu JSON 38Czas zacz�� dzia�a� — wizualizowanie informacji 40Po��czenia 42Czas zacz�� dzia�a� — wyszukiwanie po��cze� w przegl�darce 42

Renderowanie list 46Czas zacz�� dzia�a� — renderowanie list postów 46

Renderowanie po��cze� 50Czas zacz�� dzia�a� — wy�wietlanie po��cze� obiektu Graph 51

Obiekty ��daj�ce 53Czas zacz�� dzia�a� — tworzenie obiektu �daj�cego HTTP 53Po��czenia po��cze� 59Czas zacz�� dzia�a� — �adowanie zdj�� z albumu 60Wszystko razem 65Czas zacz�� dzia�a� — przemieszczanie si� w Graph 65Podsumowanie 67

Rozdzia� 3. Wpu�� mnie! 69

Co mona zobaczy�? 69Czas zacz�� dzia�a� — rozgl�danie si� po kontach innych ludzi 70Co to ma wspólnego z Graph API? 73

Tokeny dost�pu s� dowodem autoryzacji 74Autoryzacja u�ytkownika i aplikacji 74

Czas zacz�� dzia�a� — rejestracja aplikacji na Facebooku 75ID aplikacji + zalogowany u�ytkownik = token dost�pu 78

Czas zacz�� dzia�a� — �danie tokenu dost�pu przy uyciu przegl�darki 78Rejestrowanie URI przekierowania dla naszej aplikacji 78U�ywanie tokenu dost�pu 81Ja, ja, ja 83Zachowanie tajemnicy 83Co da� nam Facebook? 84

Uwierzytelnianie za pomoc� AS3 85Czas zacz�� dzia�a� — uywanie tokenu dost�pu w aplikacji Visualizer 85

To oszustwo! 90Czas zacz�� dzia�a� — uwierzytelnianie w aplikacji 90

Inne podej�cie 92Czas zacz�� dzia�a� — uwierzytelnianie za pomoc� JavaScriptu 92

Tworzenie strony zwrotnej 94Odbieranie tokenu dost�pu 96Co z u�ytkownikami, którzy nie u�ywali wcze�niej tej aplikacji? 99

Uprawnienia rozszerzone 101Czas zacz�� dzia�a� — uzyskiwanie uprawnie� rozszerzonych 101Czas zacz�� dzia�a� — �danie uprawnie� rozszerzonych 102

Chc� wszystkiego i chc� tego teraz 105Korzystanie z Adobe ActionScript 3 SDK for Facebook Platform 106Czas zacz�� dzia�a� — implementacja SDK 106Podsumowanie 114

Page 5: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Spis tre�ci

5

Rozdzia� 4. Dalej w Graph 117

Pobieranie wi�kszej liczby wyników ze stronicowaniem 117Czas zacz�� dzia�a� — wy�wietlanie liczby obiektów na li�cie 118Czas zacz�� dzia�a� — �danie wi�kszej liczby obiektów 121Czas zacz�� dzia�a� — �danie jeszcze wi�kszej liczby obiektów 123

Stronicowanie 124Czas zacz�� dzia�a� — uzyskiwanie danych podzielonych na strony 125Czas zacz�� dzia�a� — dodawanie parametrów limit i offset do instancji GraphRequest 127Czas zacz�� dzia�a� — �danie danych na podstawie daty 129Czas zacz�� dzia�a� — dodawanie parametrów since i until do instancji GraphRequest 131Czas zacz�� dzia�a� — filtrowanie wed�ug daty za pomoc� UI 133

Partycjonowanie z okazji Twoich urodzin 136Czas zacz�� dzia�a� — uywanie parametru ids w Graph URL 139Podsumowanie 141

Rozdzia� 5. Wyszukaj mnie 143

Uywanie funkcji Search (szukaj) na stronie g�ównej 143Czas zacz�� dzia�a� — badanie wyników szybkiego wyszukiwania 144Czas zacz�� dzia�a� — korzystanie z pe�nego wyszukiwania 146Wyszukiwanie za pomoc� Graph API 149Czas zacz�� dzia�a� — wyszukiwanie bez autoryzacji 149Czas zacz�� dzia�a� — wyszukiwanie po dokonaniu autoryzacji 153

Ró�nice 156Ograniczenia 156

Czas zacz�� dzia�a� — implementowanie okna Search (szukaj) w projekcie Visualizer 158Czas zacz�� dzia�a� — wyszukiwanie za pomoc� SDK 162Czas zacz�� dzia�a� — wyszukiwanie w Twoich aktualno�ciach 165Czas zacz�� dzia�a� — wyszukiwanie w�ród postów na tablicy znajomego 167Czas zacz�� dzia�a� — przeszukiwanie aktualno�ci za pomoc� aplikacji Visualizer 169Podsumowanie 174

Rozdzia� 6. Dodawanie do Graphu 177

Witaj, Facebooku! 177Czas zacz�� dzia�a� — publikowanie na tablicy uytkownika 178

Metody ��da� 181Co to jest metoda ��dania? 181

Czas zacz�� dzia�a� — uywanie metody POST 182Czas zacz�� dzia�a� — wykrywanie b��dów 184Czas zacz�� dzia�a� — przyznawanie potrzebnych uprawnie� 186Czas zacz�� dzia�a� — publikowanie posta za pomoc� SDK 188Dalsza praca z postami na tablicy 190Czas zacz�� dzia�a� — publikowanie postów sformatowanych 191Pisanie na innych tablicach 196Czas zacz�� dzia�a� — pisanie za pomoc� aplikacji Visualizer na innej tablicy 197

Parametry actions, privacy i source 198Parametr actions 198

Page 6: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Spis tre�ci

6

Czas zacz�� dzia�a� — dodawanie operacji za pomoc� parametru actions 199Parametr privacy 200

Czas zacz�� dzia�a� — modyfikowanie ustawie� prywatno�ci posta 201Parametr source 203

Usuwanie obiektów Graph 203Czas zacz�� dzia�a� — usuwanie posta 204Czas zacz�� dzia�a� — usuwanie postów za pomoc� aplikacji Visualizer 204Publikowanie innych obiektów Graph 210

Komentarze 210Oznaczenie „Lubi� to!” 211

Usuwanie oznacze� „Lubi� to!” 212Notatki 212

Wydarzenia 213RSVP wydarze� 214Albumy 215Zdj�cia 216Zameldowania 217

A co z…? 218Wysy�anie wiadomo�ci do skrzynki 218Tworzenie stron, grup, aplikacji i wideo 218Modyfikowanie informacji biograficznych 219Tworzenie znajomych 219Zapraszanie znajomych na wydarzenia 219

Podsumowanie 219

Rozdzia� 7. FQL ma znaczenie! 223

Co to jest FQL? 224Interfejs FQL 224

Modele danych 225Reprezentacje danych 226

Pobieranie informacji 226Czas zacz�� dzia�a� — pobieranie informacji z tabeli page 227Co z po��czeniami? 230

Zdj�cia, albumy i ich w�a�ciciele 232Klucze podstawowe 234Kurze �apki 235Tabele ��cza 236

Czas zacz�� dzia�a� — pobieranie listy nazw znajomych uytkownika za pomoc� AS3 238Czas zacz�� dzia�a� — �atwiejszy sposób 239Czas zacz�� dzia�a� — ograniczanie liczby wywo�a� API do jednego 239Graph jako warstwa 240Uprawnienia 241

Sprawdzanie istniej�cych uprawnie� 241Uzyskiwanie dalszych informacji 242

Ograniczenia 243Wyszukiwania musz� wykorzystywa� pole indeksowane 243

Czy to ma znaczenie praktyczne? 244

Page 7: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Spis tre�ci

7

Zaawansowany FQL 244Operatory 245

Operatory porównania 245Operatory logiczne 245

Sortowanie 246Stronicowanie 246Dodatkowe funkcje 247Wywo�ywanie kilku zapyta� jednocze�nie 248

Podsumowanie 248

Rozdzia� 8. Zako�czenie 251

Umieszczanie aplikacji online 251Na Facebooku 252

IFrame 252Czas zacz�� dzia�a� — przygotowanie IFrame aplikacji 253

Zak�adki na stronie 256Czas zacz�� dzia�a� — dodawanie aplikacji do zak�adki strony 256

Poza Facebookiem 258W�asna witryna 259Portale gier Flash 260Jako aplikacja desktopowa AIR 261

Czas zacz�� dzia�a� — autoryzacja za pomoc� AIR i HTTP 261Czas zacz�� dzia�a� — autoryzacja za pomoc� AIR i SDK 263

Jako aplikacja AIR dla systemu Android 265Czas zacz�� dzia�a� — autoryzacja w systemie Android 265

Konfigurowanie ustawie� aplikacji na Facebooku 267Udost�pnianie aplikacji 268

Edytowanie strony profilu aplikacji 269Katalog aplikacji Facebooka 272

Uwaga na przestrzeganie zasad! 273Co dalej? 274

Oficjalny AS3 Facebook SDK 274Inne API dla Facebooka 274JavaScript SDK 274

Insights API 275Facebook Chat API 275Internationalization API 275

Us�uga Adobe Social 275Technologie powi�zane 276

PHP 276Protokó� Open Graph 276Aktualizacje w czasie rzeczywistym 276

Zupe�nie nowe i dost�pne wkrótce 277Facebook Credits 277U�ytkownicy testowi 277Nowe wiadomo�ci 277

Zasoby dla programistów Facebooka 277Oficjalne zasoby Facebooka 277Inne dobre witryny 278Ja, ja, ja! 279

Page 8: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Spis tre�ci

8

Nad�y� za Zuckerbergami 279Radzenie sobie ze zmianami 280

Podsumowanie 280

Dodatek A. Odpowiedzi na pytania do quizów 281

Rozdzia� 2. 281Rozdzia� 3. 281Rozdzia� 4. 282Rozdzia� 5. 282Rozdzia� 6. 282Rozdzia� 7. 282

Skorowidz 283

Page 9: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

2

Witaj w Graphie

Facebook przechowuje ogromn� ilo�� informacji o ludziach, firmach,wydarzeniach, a tak�e albumy ze zdj�ciami i wiele innych. W nim znajdziesztak�e informacje, w jaki sposób s� one po��czone: kto jest w�a�cicielem ka�degoz albumów, kto jest na zdj�ciu, która firma organizuje ka�de wydarzenie.

Przez cztery lata dost�p do wszystkich tych informacji uzyskiwano za pomoc� rozbudowanegoAPI, który w miar� dodawania do niego nowych funkcji stawa� si� coraz bardziej z�o�ony.W kwietniu 2010 Facebook uruchomi� Graph API, który znacznie upro�ci� dost�p do wszel-kich danych.

W tym rozdziale:

� Poznasz Facebook Graph.� Dowiesz si�, czym jest Graph API i jak� struktur� nadaje wszystkim danym na

Facebooku.� Uzyskasz dost�p do publicznych danych Graphu za pomoc� AS3 i Graph API.

Zaczynamy.

Dost�p do Graph API poprzez przegl�dark�Przejdziemy od razu do rzeczy — zobaczymy, jak Graph API prezentuje informacje ze stronypublicznej.

Page 10: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

32

Ka�dy u�ytkownik Facebooka ma w�asny profil osobisty, który mo�esz zobaczy� po zalogowaniu si� naFacebook i klikni�ciu ��cza Profile (Profil) na pasku nawigacji na górze witryny. Profile publiczne wygl�-daj� podobnie, ale s� zaprojektowane jako sposób zaistnienia na Facebooku dla przedsi�biorstw, ze-spo�ów muzycznych, produktów, organizacji i osób publicznych.

Oznacza to, �e wielu ludzi ma zarówno profil osobisty, jak i publiczny. Przyk�adowo Mark Zuckerberg —twórca Facebooka — ma profil osobisty pod adresem http://www.facebook.com/zuck oraz profil pu-bliczny pod adresem http://www.facebook.com/markzuckerberg. W ten sposób mo�e u�ywa� profiluosobistego do kontaktów ze znajomymi i rodzin�, a publicznego — dla fanów i innych zwolenników.

Istnieje jeszcze jeden rodzaj strony: strona spo�eczno�ciowa. Strony tego rodzaju s� bardzo podobnedo profili osobistych, jednak nie dotycz� osób, tylko innych bytów, takich jak interesuj�ce zagadnienia,do�wiadczenia i szczytne sprawy. Takie strony automatycznie pobieraj� informacje z Wikipedii na danytemat, je�li to potrzebne, oraz przekazuj� na �ywo wszelkie posty na tablicy na dany temat.

Wszystko to mo�e wydawa� si� nieco zagmatwane, jednak nie powiniene� si� przejmowa� — kiedy za-czniesz korzysta� z ró�nego rodzaju stron, wszystko stanie si� jasne.

Czas zacz�� dzia�a� — �adowanie stronyW przegl�darce przejd do adresu http://www.facebook.com/PacktPub, aby za�adowa� stron�Packt Publishing na Facebooku. Zobaczysz list� najnowszych postów na tablicy, zak�adk� Infooraz albumy ze zdj�ciami (zawieraj� g�ównie ok�adki ksi��ek), a tak�e zdj�cie profilowe orazlist� fanów i ��czy (patrz rysunek na nast�pnej stronie).

Tak w�a�nie u�ytkownicy witryny widz� zawarte w niej informacje. W jaki sposób „zobaczy”je nasz kod? Mo�emy sprawdzi�, jak Graph API odtwarza zawarto�� strony Packt Publishing;wystarczy wpisa� w przegl�darce adres https://graph.facebook.com/PacktPub. Adres ten toGraph URL — zauwa�, �e to ten sam adres, co adres samej strony, ale z bezpiecznym po��-czeniem https oraz poddomen� graph zamiast WWW.

Zobaczysz informacje zaprezentowane w nast�puj�cy sposób:

{ "id": "204603129458", "name": "Packt Publishing", "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs302.ash1/2327 �4_204603129458_7460_s.jpg", "link": "http://www.facebook.com/PacktPub", "category": "Products_other", "username": "PacktPub", "company_overview": "Packt is a modern, IT focused book publisher, �specializing in producing cutting-edge books for communities of developers, �administrators, and newbies alike.\n\nPackt published its first book, �Mastering phpMyAdmin for MySQL Management in April 2004.", "fan_count": 412}

Page 11: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

33

Page 12: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

34

Co si� zdarzy�o?Pobra�e� reprezentacj� strony Packt Publishing w Graph API do swojej przegl�darki.

Graph API zosta� zaprojektowany tak, aby �atwo by�o go pozna� — jest sam dla siebie doku-mentacj� — uda�o si� osi�gn�� ten efekt. Jasne jest, �e powy�sze dane to lista pól i ich warto�ci.

Jednym polem, którego znaczenie mo�e nie by� jasne, jest id. To numer, którego Facebook u�ywawewn�trznie do wskazywania strony. Oznacza to, �e strona ma dwa numery ID: numerycznyprzypisywany automatycznie przez Facebook oraz alfanumeryczny wybierany przez w�a�cicielastrony. Te dwa ID s� dla siebie odpowiednikami: je�li wpiszesz w przegl�darce https://graph.facebook.com/204603129458, zobaczysz dok�adnie te same dane, co dla https://graph.facebook.com/PacktPub.

Do prze�wiczenia — ogl�danie innych obiektówOczywi�cie, strona Packt Publishing nie jest jedyn� stron�, któr� mo�esz obejrze� za pomoc�Graph API w przegl�darce. Wyszukaj inne strony na Facebooku, nast�pnie za pomoc� for-matu https://graph.facebook.com/id obejrzyj ich reprezentacje w Graph API. Czy zawieraj�wi�cej informacji, czy mniej?

Nast�pnie przejd do innych obiektów Facebooka: profili osobistych, wydarze�, grup. Dla profiliosobistych ID mo�e by� alfanumeryczny (je�li osoba zarejestrowa�a w�asn� nazw� u�ytkowni-ka Facebooka pod adresem http://www.facebook.com/username/), ale najcz��ciej ID b�dzienumeryczny — przydzielony automatycznie przez Facebook w chwili rejestracji u�ytkownika.

Dla niektórych typów obiektów (np. albumów zdj��) warto�ci ID nie b�dzie mo�na �atwo od-czyta� z adresu URL na witrynie Facebooka. Takimi przypadkami zajmiemy si� dalej w tymrozdziale.

Czasem otrzymasz informacj� o b��dzie, tak� jak ta:

{ "error": { "type": "OAuthAccessTokenException", "message": "An access token is required to request this resource." }}

Rozwi�zaniem tego problemu zajmiemy si� w dalszej cz��ci ksi��ki.

Korzystanie z Graph API za pomoc� AS3Ju� wiesz, jak �atwo odczytywa� dane Facebooka w przegl�darce. Teraz zobaczysz, jak je po-biera� za pomoc� AS3.

Page 13: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

35

Czas zacz�� dzia�a� — pobieranie informacjize strony za pomoc� AS3Przygotuj projekt za pomoc� plików startowych rozdzia�u 2., tak jak wyja�niono w rozdziale 1.Sprawd, czy projekt kompiluje si� bez b��dów (mo�e pojawi� si� kilka ostrze�e�, zale�nie odustawie� IDE). Powiniene� zobaczy� SWF o wymiarach 640 na 480 pikseli, w kolorze bia�ymi z trzema przyciskami w lewym górnym rogu: Zoom In (powi�ksz), Zoom out (zmniejsz) orazReset View (zeruj widok).

Ten projekt jest podstaw� bogatej aplikacji internetowej (RIA), za pomoc� której b�dzie mo�-na przegl�da� wszystkie informacje na Facebooku przy u�yciu Graph API. Ca�y kod UI jestju� gotowy, potrzeba tylko danych Graph do wyrenderowania informacji. Naszym zadaniemb�dzie napisanie kodu, który pobierze te dane i przeka�e do rendererów.

Nie b�d� zag��bia� si� w szczegó�y ca�ego projektu i wyja�nia�, co robi ka�da klasa, poniewa�tematem tej ksi��ki jest wykorzystanie Facebooka w po��czeniu z Flashem, a nie budowanieaplikacji RIA. W tej chwili powiniene� wiedzie�, jak dzia�a pojedyncza instancja z pakietucontrollers. Obiekt klasy CustomGraphContainerController jest tworzony w chwili inicjaliza-cji projektu i odpowiada za przep�yw danych do i z Facebooka. W tym celu dziedziczy kilkaprzydatnych metod po klasie controllers.GCController; skorzystamy z nich póniej.

Za pomoc� swojego IDE otwórz klas� CustomGraphContainerController. Znajduje si� ona w pliku\src\controllers\CustomGraphContainerController.as, a jej zawarto�� jest taka jak w listingu ni�ej:

package controllers{ import ui.GraphControlContainer; public class CustomGraphContainerController extends GCController { public function CustomGraphContainerController(a_graphControlContainer: �GraphControlContainer) { super(a_graphControlContainer); } }}

Na pocz�tku przy u�yciu Graph URL pobierzemy reprezentacj� strony Packt Publishing w GraphAPI, tak samo jak robili�my to w przegl�darce. W tym celu mo�emy skorzysta� z klasy URLLoader.

Page 14: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

36

Klasy URLLoader i URLRequest u�ywane s� razem do �adowania danych z adresu URL. Dane te mog� by�tekstem, danymi binarnymi lub zmiennymi zakodowanymi w URL. �adowanie rozpoczyna si� od przeka-zania obiektu URLRequest, którego w�a�ciwo�� url zawiera ��dany URL, do metody load() obiektuURLLoader.

Po zakoczeniu �adowania ��danych danych URLLoader wywo�uje zdarzenie COMPLETE. Dane mo�naodczyta� z w�a�ciwo�ci data tego zdarzenia.

Zmodyfikuj CustomGraphContainerController.as w nast�puj�cy sposób (nowe linie wyró�nio-ne s� pogrubieniem):

package controllers{ import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import ui.GraphControlContainer;

public class CustomGraphContainerController extends GCController {

public function CustomGraphContainerController(a_graphControlContainer: �GraphControlContainer) { super(a_graphControlContainer);

var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest(); //wska�, który Graph URL za�adowa� request.url = "https://graph.facebook.com/PacktPub"; loader.addEventListener(Event.COMPLETE, onGraphDataLoadComplete); //rozpocznij w�a�ciwy proces �adowania loader.load(request); }

private function onGraphDataLoadComplete(a_event:Event):void { var loader:URLLoader = a_event.target as URLLoader; //pobierz dane, które zosta�y za�adowane, i wy�wietl je var graphData:String = loader.data; trace(graphData); } }}

Tutaj tylko �adujemy informacje z adresu https://graph.facebook.com/PackPub i wypisujemy jew oknie wyj�cia.

Page 15: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

37

Przetestuj projekt i obejrzyj zawarto�� okna wyj�cia. Powiniene� zobaczy� nast�puj�ce dane:

{"id":"204603129458","name":"Packt Publishing","picture":"http:\/\/profile.ak.�fbcdn.net\/hprofile-ak-snc4\/hs302.ash1\/23274_204603129458_7460_s.jpg",�"link":"http:\/\/www.facebook.com\/PacktPub","category":"Products_other",�"username":"PacktPub","company_overview":"Packt is a modern, IT focused book�publisher,specializing in producing cutting-edge books for communities of�developers, administrators, and newbies alike.\n\nPackt published its first�book, Mastering phpMyAdmin for MySQL Management in April 2004.","fan_count":412}

Je�eli otrzymujesz b��d, sprawd, czy Twój kod odpowiada kodowi zamieszczonemu powy�ej.Je�li w oknie wyj�cia nie ma nic, upewnij si�, �e jeste� po��czony z internetem. Je�li ci�gle nicnie wida�, by� mo�e ustawienia zabezpiecze� nie zezwalaj� na dost�p do internetu poprzezFlash, sprawd tak� mo�liwo��.

Co si� zdarzy�o?Podzia�y wierszy i tabulatory pomi�dzy warto�ciami zosta�y usuni�te, a niektóre znaki ukryte,dzi�ki czemu tekst trudno odczyta�, jednak mo�esz przekona� si�, �e to te same dane, któreuzyskali�my, wpisuj�c w przegl�darce https://graph.facebook.com/PacktPub. Nie ma tu �adnychniespodzianek — w�a�nie tak dzia�a URLLoader.

Dane w takiej postaci nie s� szczególnie przydatne. Aby co� z nimi zrobi�, b�dziemy musieliskonwertowa� je na obiekt, z którym b�dziemy mogli wspó�pracowa� bezpo�rednio w AS3.

Format wykorzystany w Graph API nosi nazw� JSON (wymawiane „d�ejson”, skrót od ang.JavaScript Object Notation — obiekt w notacji JavaScript).

JSON jest zrozumia�ym dla cz�owieka formatem danych opartym na tek�cie. Pozwala na pre-zentowanie obiektów jako par klucz-warto�� w nast�puj�cy sposób:

{ "klucz1": "warto��1", "klucz2": "warto��2", "klucz3": "warto��3"}

Warto�ci mog� by� ci�gami znaków (w cudzys�owie), liczbami, warto�ciami Boolean lub null(bez cudzys�owów).

Obiekty JSON mog� tak�e zawiera� tablice oznaczone nawiasami kwadratowymi:

{ "klucz1": "warto��1", "tablica": [ "Pierwszy element w tablicy", "Drugi element w tablicy ", "Trzeci element w tablicy " ]}

Page 16: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

38

Mog� nawet zawiera� inne obiekty JSON oznaczone zagnie�d�onymi nawiasami klamrowymi:

{ "klucz1": "warto��1", "podObiekt": { "podKlucz1": "podWarto��1", "podKlucz2": "podWarto��2", }}

Takie podobiekty mog� zawiera� inne obiekty lub tablice, a tablice mog� zawiera� kolejneobiekty i tablice.

Zauwa�, �e przypomina to sk�adni� AS3 s�u��c� do deklarowania obiektu:

var obiektAS3:Object = { klucz1:"warto��1", klucz2:"warto��2", podObiekt:{ podKlucz1:"podwarto��1" }, mojaTablica:[1, 2, 3]}

Wi�cej informacji znajdziesz na http://www.json.org.

W odró�nieniu od XML, AS3 nie ma wbudowanych funkcji obs�uguj�cych obiekty JSON, ist-nieje jednak oficjalnie wspierana biblioteka, która to robi.

Czas zacz�� dzia�a� — deserializowanieobiektu JSONBiblioteka Adobe as3corelib zawiera zestaw klas narz�dziowych s�u��cych do serializowaniai deserializowania JSON. Jest dost�pna pod adresem http://github.com/mikechambers/as3corelib,ale nie musisz jej pobiera�, poniewa� znajduje si� tak�e w katalogu \src\ projektu (sk�ada si� zewszystkich klas w pakiecie com.adobe.*).

1. W CustomGraphContainerController.as zaimportuj klas� JSON:import com.adobe.serialization.json.JSON;

2. Zmodyfikuj funkcj� onGraphDataLoadComplete() tak, aby deserializowa�a ci�g znakówJSON na obiekt zamiast prostego wy�wietlania tego ci�gu:

private function onGraphDataLoadComplete(a_event:Event):void{ var loader:URLLoader = a_event.target as URLLoader;

Page 17: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

39

//pobierz dane, które zosta�y za�adowane, i wy�wietl je var graphData:String = loader.data; var decodedJSON:Object = JSON.decode(graphData);}

3. Wy�wietl w�a�ciwo�� name nowego obiektu, aby sprawdzi� dzia�anie kodu:

private function onGraphDataLoadComplete(a_event:Event):void{ var loader:URLLoader = a_event.target as URLLoader; //pobierz dane, które zosta�y za�adowane, i wy�wietl je var graphData:String = loader.data; var deserialisedJSON:Object = JSON.decode(graphData); trace("name:", decodedJSON.name);}

4. Skompiluj i uruchom SWF. Rezultat powinien by� nast�puj�cy:

name: Packt Publishing

Co si� zdarzy�o?Przekazali�my ci�g znaków do metody JSON.decode():

{ "id":"204603129458", "name":"Packt Publishing", "picture":"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-snc4\/hs302.ash1\/23274_ �204603129458_7460_s.jpg", "link":"http:\/\/www.facebook.com\/PacktPub", "category":"Products_other","username":"PacktPub", "company_overview":"Packt is a modern, IT focused book publisher,specializing �in producing cutting-edge books for communities of developers, administrators, �and newbies alike.\n\nPackt published its first book, Mastering phpMyAdmin �for MySQL Management in April 2004.", "fan_count":412}

W efekcie �a�cuch zosta� zamieniony na obiekt w�asny AS3, tak jakby�my wpisali:

var graphObject:Object = {};graphObject.id = "204603129458";graphObject.name = "Packt Publishing";graphObject.picture = "http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs302.ash1/�23274_204603129458_7460_s.jpg";graphObject.link = "http://www.facebook.com/PacktPub";graphObject.category = "Products_other";graphObject.username = "PacktPub";graphObject.company_overview = "Packt is a modern, IT focused book publisher,specializing in producing cutting-edge books for communities of developers,administrators, and newbies alike.\n\nPackt published its first book, MasteringphpMyAdmin for MySQL Management in April 2004."graphObject.fan_count = 412;

Page 18: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

40

(Zauwa�, �e w odró�nieniu od „surowego” ci�gu znaków, którego u�yli�my wcze�niej, znaki uko-�nika w URL nie zosta�y oznaczone znakami ucieczki).

Oznacza to, �e mo�emy �atwo uzyska� dost�p do wszelkich informacji, które posiada Facebookna temat tej strony, mo�emy nawet iterowa� poprzez poszczególne elementy danych.

Czas zacz�� dzia�a�— wizualizowanie informacjiDo�� instrukcji trace()! Czas wy�wietli� co� we w�a�ciwym pliku SWF.

CustomGraphContainerController dziedziczy metod� renderGraphObject(), która zrobi to dlanas. Wystarczy przekaza� jej argument typu graph.GraphObject.

GraphObject.as jest prost� klas�, otwórz plik i obejrzyj j�:

package graph{ import graph.controls.GraphObjectRenderer; public dynamic class GraphObject extends BaseGraphItem { public var rendererObject:GraphObjectRenderer; public var graphObjectListRenderers:Array = [];

public function GraphObject() {

} }}

Nie powiniene� zajmowa� si� tym kodem. Musisz tylko wiedzie�, �e jest oznaczony jako dynamic,co znaczy, �e mo�esz tworzy� nowe w�a�ciwo�ci w czasie wykonywania bez nadawania imnazw wcze�niej. Mo�emy wi�c zrobi� tak:

var graphObject:GraphObject = new GraphObject();graphObject.favoriteColor = "red";

Kiedy GraphObject zostanie przekazany do metody CustomGraphContainerController.renderGraph�Object(), ka�da z w�a�ciwo�ci GraphObject zostanie wyrenderowna na li�cie — automatycznie,ka�da w�a�ciwo�� wraz z tymi dwiema, które ju� zosta�y zdefiniowane wewn�trz klasy.

Wewn�trz funkcji CustomGraphContainerController.onGraphDataLoadComplete() wykonaj na-st�puj�ce czynno�ci.

Page 19: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

41

1. Utwórz now� instancj� GraphObject. 2. Skopiuj wszystkie w�a�ciwo�ci decodedJSON do nowego GraphObject. 3. Przeka� GraphObject do renderGraphObject(). 4. Kod, który to wszystko wykonuje, jest nast�puj�cy:

private function onGraphDataLoadComplete(a_event:Event):void{ var loader:URLLoader = a_event.target as URLLoader; //pobierz dane, które zosta�y za�adowane, i wy�wietl je var graphData:String = loader.data; var decodedJSON:Object = JSON.decode(graphData); var graphObject:GraphObject = new GraphObject(); //skopiuj wszystkie w�a�ciwo�ci z decodedJSON do graphObject for (var key:String in decodedJSON) { graphObject[key] = decodedJSON[key]; } this.renderGraphObject(graphObject);}

5. Skompiluj i przetestuj. Otrzymany SWF pokazany zosta� na rysunku poni�ej.

Kliknij przycisk Zoom In (powi�ksz) kilka razy, aby renderer sta� si� wi�kszy i lepiej widocz-ny, tak jak na rysunku powy�ej. Twój renderer mo�e wy�wietla� pola w innej kolejno�ci; Fa-cebook zwraca pola w przypadkowej kolejno�ci.

Co si� zdarzy�o?Okno, które pojawi�o si� na scenie, nazywam rendererem, a konkretnie rendererem obiektuGraph. Mo�e by� ono przeci�gane poprzez chwycenie za pasek tytu�owy, jego zawarto��mo�na przewija�, a ca�e okno zamkn��, klikaj�c przycisk w prawym górnym rogu.

Page 20: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

42

Uda�o Ci si� pobra� dane z Graph API Facebooka i wy�wietli� je w SWF. Plik SWF jest ela-styczny — wystarczy, �e zmienisz warto�� request.url, tak aby wskazywa�a na Graph URLinnego obiektu Facebooka, i zobaczysz obiekt ten wy�wietlony w rendererze.

Wi�kszo�� danych z GraphObject zosta�a wy�wietlona w polu tekstowym wewn�trz okna w pro-stym formacie "klucz: warto��". Pole name strony jest wy�wietlone na pasku tytu�owym okna,a je�li strona ma pole picture (w JSON widzimy, �e PacktPub ma), obraz jest pobierany i wy-�wietlany wewn�trz renderera za pomoc� obiektu Loader.

Podobnie do URLLoader, klasa flash.display.Loader pobiera obiekt, który wskazuje URLRequest,oraz wywo�uje zdarzenie COMPLETE, kiedy pobieranie zostaje zakoczone. W odró�nieniu od URLLoader,Loader s�u�y do pobierania obrazów i plików SWF, a zdarzenie jest wywo�ywane przez jeden z jegopodobiektów — contentLoaderInfo. Loader jest rozszerzeniem DisplayObject i przyjmuje wygl�dobrazu, kiedy skoczy go pobiera�.

Model zabezpiecze Flasha zapobiega dost�powi do danych obrazów z plików SWF znajduj�cych si� w innejdomenie ni� obraz, chyba �e plik regu� mi�dzydomenowych umieszczony w domenie obrazu na to zezwala.Na szcz��cie, plik tego rodzaju na Facebooku jest tolerancyjny i pozwala na dost�p z ka�dej domeny.

Jest to graficzna reprezentacja obiektu strony z Graph API.

Po��czeniaBy� mo�e my�lisz: „To bardzo �adnie, ale przecie� okno nie pokazuje wszystkich informacjizwi�zanych ze stron�, czy� nie? Gdzie s� posty z tablicy i zdj�cia?”.

Czas zacz�� dzia�a� — wyszukiwaniepo��cze� w przegl�darceFacebook traktuje wszystkie posty z tablic, zdj�cia, wideo, a nawet informacje o statusie jakoodr�bne obiekty w Graph API; nie umieszcza ich razem w obiekcie strony. Oto na przyk�adobiekt reprezentuj�cy pojedynczy post autorstwa Packt Publishing:

{ "id": "204603129458_127056137323572", "from": { "name": "Packt Publishing", "category": "Products_other", "id": "204603129458"},

Page 21: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

43

"message": "The Amazon SimpleDB Developer Guide has been published! Get your�copy now! http://bit.ly/blFQUG","picture":"http://external.ak.fbcdn.net/safe_image.php?d=c4a7887cb52dd8f93e439aaec13c034�b&w=130&h=130&url=https%3A%2F%2Fwww.packtpub.com%2Fsites%2Fdefault%2Ffiles%�2Fimagecache%2Fproductview%2F7344EN_MockupCover%2520Template.jpg","link": "http://bit.ly/blFQUG","name": "Amazon SimpleDB Developer Guide | Packt Publishing Technical & IT Book�Store","caption": "bit.ly","description": "Gain in-depth understanding of Amazon SimpleDB with PHP, Java,�and Python examples, and run optimized database-backed applications onAmazon\\'s Web Services cloud","icon": "http://static.ak.fbcdn.net/rsrc.php/zB010/hash/9yvl71tw.gif","type": "link","created_time": "2010-06-04T12:39:44+0000","updated_time": "2010-06-04T12:39:44+0000","likes": 1}

Ten obiekt ju� wygas� i nie jest dost�pny przy u�yciu Graph API, jednak — jak by� mo�ezgad�e� — by� dost�pny pod adresem https://graph.facebook.com/204603129458_127056137323572. Jest w tym samym formacie, co obiekt strony, chocia� ma kilka innych pól, a wi�cnasz renderer obiektów Graph móg�by wyrenderowa� go poprawnie.

Oczywi�cie, takie rozwi�zanie jest bezu�yteczne, chyba �e b�dziemy znali ID ka�dego z po-stów przypisanych Packt Publishing. Nie wiadomo, sk�d uzyska� takie dane. A mo�e jednakwiadomo?

Powiedzia�em wcze�niej, �e Graph API zosta� zaprojektowany tak, aby by� dokumentacj� dlasamego siebie. Mo�emy za��da� dodatkowych metainformacji o dowolnym obiekcie Graphpoprzez dodanie flagi metadata=1 na ko�cu dowolnego Graph URL. Otwórz https://graph.facebook.com/PacktPub?metadata=1 w przegl�darce. W JSON pojawi si� nowa w�a�ciwo�� type.

"type": "page"

To jest przydatne, bo — jak powiedzia�em — posty i strony (oraz wszystkie obiekty Graph)przyjmuj� ten sam format, a ta w�a�ciwo�� umo�liwia ich rozpoznawanie.

W tej chwili jednak bardziej interesuje nas nowy obiekt metadata. Zawiera on jeden obiektconnections oraz jedn� tablic� fields. Przyjrzyjmy si� najpierw tablicy fields:

"fields": [{ "name": "id", "description": "The page's ID"},{ "name": "name", "description": "The page's name"

Page 22: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

44

},{ "name": "picture", "description": "The pages profile picture"},{ "name": "category", "description": "The page's category"},{ "name": "fan_count", "description": "\\* The number of fans the page has"}]

Jest to lista wyja�niaj�ca, co reprezentuje ka�de z pól w ciele obiektu Graph. W czasie pisania tejksi��ki zosta�a dodana nowa funkcja, a wi�c lista mo�e by� pe�niejsza, kiedy Ty j� zobaczysz.

Oto obiekt connections:

"connections": { "feed": "https://graph.facebook.com/packtpub/feed", "posts": "https://graph.facebook.com/packtpub/posts", "tagged": "https://graph.facebook.com/packtpub/tagged", "statuses": "https://graph.facebook.com/packtpub/statuses", "links": "https://graph.facebook.com/packtpub/links", "notes": "https://graph.facebook.com/packtpub/notes", "photos": "https://graph.facebook.com/packtpub/photos", "albums": "https://graph.facebook.com/packtpub/albums", "events": "https://graph.facebook.com/packtpub/events", "videos": "https://graph.facebook.com/packtpub/videos"}

Obejrzyj w przegl�darce jeden z adresów URL z poprzedniej listy: http://graph.facebook.com/packtpub/posts. Zwraca on struktur� JSON zawieraj�c� tablic� data oraz obiekt paging. Tablicadata zawiera kilka obiektów post, obiektem paging zajmiemy si� w dalszej cz��ci ksi��ki.

Co si� zdarzy�o?Parametr metadata=1 nakazuje interfejsowi Graph API wy�wietlenie wszystkich metadanycho bie��cym obiekcie, w tym przypadku s� to mi�dzy innymi typ obiektu, tablica opisów w�a-�ciwo�ci obiektu oraz wszystkie adresy URL, które zawieraj� listy obiektów powi�zanych z t�stron�.

Od takiego uk�adu pochodzi nazwa Graph API. W zwyk�ym znaczeniu angielskie s�owo graphoznacza wykres, taki jak pokazany na kolejnym rysunku.

Page 23: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

45

Jednak w matematyce „graf” to zbiór wierzcho�ków po��czonych kraw�dziami, tak jak na ry-sunku poni�ej.

Graph API to reprezentacja danych przechowywanych na Facebooku, u�o�onych tak jak nakolejnym rysunku.

Na diagramie z rysunku powy�ej ka�dy obiekt jest wierzcho�kiem, a kraw�dzie reprezentuj�ró�ne rodzaje po��cze�.

Przywo�anie http://graph.facebook.com/packtpub/posts zwraca wszystkie wierzcho�ki z��czonez PacktPub za pomoc� po��czenia typu posts, czyli wszystkie obiekty post, które zosta�yumieszczone na tablicy wydawnictwa Packt.

Page 24: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

46

Do prze�wiczenia — badanie po��cze�Pozna�e� parametr metadata, mo�esz zatem za pomoc� przegl�darki zbada� ró�ne rodzaje po-��cze� i zobaczy�, jakiego rodzaju obiekty mo�na znale�.

Renderowanie listCo si� stanie, je�li spróbujesz za�adowa� https://graph.facebook.com/packtpub/posts za pomo-c� tego samego kodu, którego u�yli�my do za�adowania obiektu strony Packt Publishing?

W panelu wyj�cia otrzymasz nast�puj�cy komunikat:

Graph Object was null!

Nie uda�o si�. Sposób, w jaki Graph API okre�la struktur� JSON, w tym przypadku jest zupe�nieró�ny od struktury JSON dla strony, posta lub ka�dego innego obiektu Graph. To samo b�dziedotyczy� JSON dla adresów URL innych po��cze�. Struktur� t� nazywamy list� Graph.

Czas zacz�� dzia�a� — renderowanielist postówJako �e w�a�ciwo�� data listy Graph jest tablic� obiektów Graph, mo�emy przej�� przez ni�w p�tli i utworzy� renderer obiektu Graph dla ka�dego elementu. Mo�esz spróbowa� to zro-bi�, ja jednak preferuj� inne rozwi�zanie.

Utworzy�em drugi renderer: tym razem renderer listy Graph. Utworzy�em tak�e klas� graph.�GraphList. CustomGraphContainerController dziedzicz�c� metod� renderGraphList(). Przyjmujeona jako parametr obiekt typu graph.GraphList i tworzy nowy renderer listy Graph s�u��cy dowy�wietlania jego zawarto�ci. Potrzebujemy wi�c listy Graph — otrzymamy j� od Graph API— któr� przekszta�cimy w instancj� klasy GraphList. Klasa GraphList jest nieco bardziejskomplikowana ni� GraphObject; posiada metod� addToList(), do której mo�emy przekaza�dowoln� instancj� GraphObject, aby doda� j� do listy.

Page 25: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

47

Ci�gle b�dziemy przechodzi� w p�tli przez tablic� data, ale zamiast renderowa� ka�dy Graph�Object oddzielnie, dodamy go do GraphList i j� wyrenderujemy.

Zmodyfikuj URL, którego potrzebuje CustomGraphContainerController, tak aby �adowanaby�a lista postów:

public functionCustomGraphContainerController(a_graphControlContainer:GraphControlContainer){ super(a_graphControlContainer); var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest(); // wska�, który Graph URL za�adowa� request.url = "https://graph.facebook.com/PacktPub/posts"; loader.addEventListener(Event.COMPLETE, onGraphDataLoadComplete); // rozpocznij w�a�ciwy proces �adowania loader.load(request);}

Po za�adowaniu trzeba zweryfikowa�, czy zwrócony element to obiekt Graph, czy lista Graph.Mo�emy to zrobi�, sprawdzaj�c w�a�ciwo�� data: je�eli w�a�ciwo�� ta istnieje, mo�emy przy-j��, �e element jest list�.

private function onGraphDataLoadComplete(a_event:Event):void{ var loader:URLLoader = a_event.target as URLLoader; //pobierz dane, które zosta�y za�adowane, i wy�wietl je var graphData:String = loader.data; var decodedJSON:Object = JSON.decode(graphData); if (decodedJSON.data) { //ma w�a�ciwo�� data, a wi�c przyjmujemy, �e jest to lista Graph }else { //nie ma w�a�ciwo�ci data, a wi�c przyjmujemy, �e jest to obiekt Graph var graphObject:GraphObject = new GraphObject(); //skopiuj wszystkie w�a�ciwo�ci z rozkodowanej struktury JSON do graphObject for (var key:String in decodedJSON) { graphObject[key] = decodedJSON[key]; } this.renderGraphObject(graphObject); }}

Wewn�trz bloku if tworzymy na pocz�tku instancj� GraphList:

if (decodedJSON.data){ //ma w�a�ciwo�� data, a wi�c przyjmujemy, �e jest to lista Graph

Page 26: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

48

var graphList:GraphList = new GraphList();}

(B�dziesz musia� doda� instrukcj� import graph.GraphList).

Pami�taj, �e decodedJSON.data jest tablic� obiektów; przechodzimy przez ni� w p�tli i tworzymyGraphObject dla ka�dego elementu.

if (decodedJSON.data){ //ma w�a�ciwo�� data, a wi�c przyjmujemy, �e jest to lista Graph var graphList:GraphList = new GraphList(); var childGraphObject:GraphObject; for each (var childObject:Object in decodedJSON.data) { childGraphObject = new GraphObject(); for (var childKey:String in childObject) { childGraphObject[childKey] = childObject[childKey]; } }}

To w zasadzie to samo, co robili�my z decodedJSON przy �adowaniu pojedynczego obiektu Graph.

A druga w�a�ciwo�� wewn�trz listy Graph, czyli obiekt paging? Powinni�my doda� tak�e j�:

if (decodedJSON.data){ //ma w�a�ciwo�� data, a wi�c przyjmujemy, �e jest to lista Graph var graphList:GraphList = new GraphList(); var childGraphObject:GraphObject; for each (var childObject:Object in decodedJSON.data) { childGraphObject = new GraphObject(); for (var childKey:String in childObject) { childGraphObject[childKey] = childObject[childKey]; } graphList.addToList(childGraphObject); } graphList.paging = decodedJSON.paging;}

Na zako�czenie przekazujemy instancj� GraphList do metody renderGraphList():

if (decodedJSON.data){ //ma w�a�ciwo�� data, a wi�c przyjmujemy, �e jest to lista Graph var graphList:GraphList = new GraphList();

Page 27: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

49

var childGraphObject:GraphObject; for each (var childObject:Object in decodedJSON.data) { childGraphObject = new GraphObject(); for (var childKey:String in childObject) { childGraphObject[childKey] = childObject[childKey]; } graphList.addToList(childGraphObject); } graphList.paging = decodedJSON.paging; this.renderGraphList(graphList);}

Skompiluj i przetestuj SWF. Rezultat pokazany zosta� na rysunku poni�ej.

Jest to okno (mo�na je przewija�) zawieraj�ce wszystkie obiekty Graph z list.

Co stanie si�, kiedy klikniesz przycisk Pop Out (wyskocz) poni�ej obiektu Graph? (Patrz pierwszyrysunek na nast�pnej stronie).

Co si� zdarzy�o?Obiekt Graph zostaje wy�wietlony we w�asnym rendererze obiektu Graph z szar� lini� ��cz�c� goz odpowiedni� pozycj� na li�cie. Dzi�ki temu mo�na obejrze� kilka pozycji listy jednocze�nie(patrz drugi rysunek na nast�pnej stronie).

(Mo�esz przeci�ga� poszczególne renderery lub przeci�ga� t�o, aby przesun�� wszystko naraz).

Staje si� jasne, �e lista Graph jest tylko kolekcj� obiektów Graph.

Page 28: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

50

Renderowanie po��cze�Pokaza�em po��czenia biegn�ce od list Graph do obiektów Graph, kolejnym krokiem b�dzieukazanie po��cze� od obiektów Graph do list Graph.

Page 29: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

51

Czas zacz�� dzia�a� — wy�wietlaniepo��cze� obiektu GraphRenderer obiektu Graph mo�e pokaza� list� wszystkich po��cze� obiektu, je�li lista ta jestdo��czona do obiektu Graph.

Musisz tylko z Graph API wydoby� t� list� razem z ��danym obiektem Graph. Nasz kod tworzyinstancj� GraphObject ze struktur� JSON, kopiuj�c wszystkie w�a�ciwo�ci JSON do GraphObject,a wi�c te metadane zostan� do��czone. Musisz tylko doda� flag� metadata=1 na ko�cu GraphURL, którego ��damy, a kod zrobi ca�� reszt�.

Mo�esz to zrobi�, zmieniaj�c kod ��dania, tak jak we fragmencie poni�ej:

public function CustomGraphContainerController(a_graphControlContainer:�GraphControlContainer){ super(a_graphControlContainer);

var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest(); //wska�, który Graph URL za�adowa� request.url = "https://graph.facebook.com/PacktPub?metadata=1"; loader.addEventListener(Event.COMPLETE, onGraphDataLoadComplete); //rozpocznij w�a�ciwy proces �adowania loader.load(request);}

Istnieje jednak bardziej elegancki sposób zrobienia tego samego — za pomoc� klasy URLVariables.

W CustomGraphContainerController.as dodaj lini� importuj�c� t� klas�:

import flash.net.URLVariables;

Nast�pnie zmodyfikuj konstruktor, tak jak poni�ej:

public function CustomGraphContainerController(a_graphControlContainer:�GraphControlContainer){ super(a_graphControlContainer);

var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest(); var variables:URLVariables = new URLVariables(); //wska�, który Graph URL za�adowa� request.url = "https://graph.facebook.com/PacktPub"; variables.metadata = 1; request.data = variables; loader.addEventListener(Event.COMPLETE, onGraphDataLoadComplete);

Page 30: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

52

//rozpocznij w�a�ciwy proces �adowania loader.load(request);}

Jak najprawdopodobniej domy�li�e� si�, ustawienie variables.metadata = 1 jest dok�adnietym samym, co doklejenie ?metadata=1 na ko�cu adresu URL. Rozwi�zanie wymaga kilku do-datkowych linii, ale znacz�co u�atwia ustawianie ró�nych parametrów oraz pozwala oddzieli�je od URL.

Skompiluj SWF; powiniene� uzyska� nast�puj�cy efekt.

Czy zauwa�y�e� nowy przycisk Connections (po��czenia) w dolnej cz��ci renderera? Kliknijprzycisk Show (poka�).

Page 31: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

53

Co si� zdarzy�o?Mo�esz teraz zobaczy� wszystkie po��czenia obiektu Graph w jego rendererze. Oczywi�cie,nie jest to szczególnie interesuj�ce, chyba �e postanowisz zobaczy�, co jest na drugim ko�cupo��czenia!

Obiekty ��daj�ceNajlepiej by�oby, gdyby po klikni�ciu przez u�ytkownika po��czenia na li�cie przewijanej po-wsta� i zosta� wy�wietlony nowy renderer listy Graph dla tego po��czenia.

Aby to osi�gn��, dodamy do listy detektor zdarzenia MouseEvent.CLICK i u�yjemy go do wy-wo�ania nowego ��dania URLLoader dla klikni�tego po��czenia.

Nas szcz��cie, kod UI zosta� ju� do��czony do projektu; musimy tylko z niego skorzysta�.W tym celu u�yjemy czego�, co nazywam obiektem ��daj�cym (ang. requestor).

Czas zacz�� dzia�a� — tworzenie obiektu�daj�cego HTTPCelem naszego dzia�ania jest przesuni�cie ca�ego kodu odnosz�cego si� do URLLoader z Custom�GraphContainerController do oddzielnej klasy HTTPRequestor. Póniej zast�pimy konstruktorCustomGraphContainerController nast�puj�cym:

public function CustomGraphContainerController(a_graphControlContainer:�GraphControlContainer){ super(a_graphControlContainer); _requestor = new HTTPRequestor(); _requestor.request(new GraphRequest("PacktPub"));}

Po co? No có�, poza utworzeniem bardziej eleganckiego kodu, istniej� jeszcze dwie istotnekorzy�ci.

1. O wiele �atwiej b�dzie za��da� kilku obiektów Graph lub list Graph; nie b�dzietrzeba tworzy� kilku instancji URLLoader.

2. W nast�pnym rozdziale zobaczysz, jak u�ywa� oficjalnego Adobe ActionScript3 SDK for Facebook Platform do pobierania informacji z Graph API. Je�li kod��dania zostanie wydzielony w jednej klasie, b�dziesz musia� zmieni� tylko jedn�lini�, aby skorzysta� z SDK zamiast HTTP:

public function CustomGraphContainerController(a_graphControlContainer:�GraphControlContainer){

Page 32: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

54

super(a_graphControlContainer); _requestor = new SDKRequestor(); _requestor.request(new GraphRequest("PacktPub"));}

GraphRequest jest prost� klas�. Jej konstruktor umo�liwia u�ycie dwóch parametrów do wskazania,co chcesz pobra� z Graph API:

� objectID, nazwa dowolnego obiektu Graph,

� connectionID, nazwa dowolnego po��czenia z tym obiektem Graph.

Aby za��da� strony Packt Publishing, u�yjemy GraphRequest:

newGraphRequest("PacktPub");

Gdy za��damy listy postów ze strony Packt Publishing, u�yjemy nast�puj�cego kodu:

newGraphRequest("PacktPub", "posts");

Klasa zosta�a ju� napisana i znajduje si� w \src\graph\apis\http\HTTPRequestor.as. Obejrzyjj�! Istnieje w niej kilka zmian w porównaniu z kodem napisanym dla CustomGraphContainer�Controller.as, ale wszystkie zosta�y wyja�nione w komentarzach:

package graph.apis.http{ import events.DialogEvent; import events.RequestEvent; import flash.events.Event; import flash.events.EventDispatcher; import flash.events.HTTPStatusEvent; import flash.events.IEventDispatcher; import flash.events.IOErrorEvent; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLVariables; import flash.utils.Dictionary; import graph.apis.base.IRequestor; import graph.BaseGraphItem; import graph.GraphList; import graph.GraphObject; import graph.GraphRequest; import com.adobe.serialization.json.JSON;

//klasa musi wywo�ywa� zdarzenia (przegl�daj� kod, zobaczysz dlaczego) public class HTTPRequestor extends EventDispatcher implements IRequestor { //s�u�y do ustalania, który GraphRequest utworzy� okre�lony //URLLoader private var _requests:Dictionary = new Dictionary();

public function HTTPRequestor(target:IEventDispatcher = null)

Page 33: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

55

{ //jest potrzebne, poniewa� klasa rozszerza EventDispatcher super(target); }

public function request(a_request:GraphRequest):void { var loader:URLLoader = new URLLoader(); var urlRequest:URLRequest = new URLRequest(); var variables:URLVariables = new URLVariables();

//tworzymy URL z parametrów GraphRequest urlRequest.url = "https://graph.facebook.com/" + a_request.objectID; if (a_request.connectionID) { urlRequest.url += "/" + a_request.connectionID; } variables.metadata = 1; urlRequest.data = variables;

//s�u�y do ustalania, który GraphRequest utworzy� okre�lony //URLLoader w czasie dalszego dzia�ania _requests[loader] = a_request; loader.addEventListener(Event.COMPLETE, onGraphDataLoadComplete); loader.load(urlRequest); }

private function onGraphDataLoadComplete(a_event:Event):void { var loader:URLLoader = a_event.target as URLLoader; var graphData:String = loader.data; var decodedJSON:Object = JSON.decode(graphData); //znajdujemy oryginalny GraphRequest u�yty do utworzenia URLLoader var originalRequest:GraphRequest = _requests[loader] as GraphRequest; if (decodedJSON.data) { var graphList:GraphList = new GraphList(); var childGraphObject:GraphObject; for each (var childObject:Object in decodedJSON.data) { childGraphObject = new GraphObject(); for (var childKey:String in childObject) { childGraphObject[childKey] = childObject[childKey]; } graphList.addToList(childGraphObject); } graphList.paging = decodedJSON.paging; //u�ywamy w�a�ciwo�ci oryginalnego GraphRequest do dodania

Page 34: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

56

//kilku danych do samej graphList graphList.ownerID = originalRequest.objectID; graphList.connectionType = originalRequest.connectionID;

//ta klasa nie ma metody renderGraphList(), //a wi�c wywo�ujemy zdarzenie, które CustomGraphContainerController //b�dzie wykrywa� i wywo�a w�asn� metod� renderGraphList() dispatchEvent(new RequestEvent(RequestEvent.REQUEST_COMPLETED, �graphList)); } else { var graphObject:GraphObject = new GraphObject(); for (var key:String in decodedJSON) { graphObject[key] = decodedJSON[key]; } //ta klasa nie ma metody renderGraphList(), //a wi�c wywo�ujemy zdarzenie, które CustomGraphContainerController //b�dzie wykrywa� i wywo�a w�asn� metod� renderGraphList() dispatchEvent(new RequestEvent(RequestEvent.REQUEST_COMPLETED, �graphObject)); } } }}

Nie musisz zmienia� istniej�cego kodu ani nawet rozumie� go, wyj�tek stanowi kod ��daniaHTTP, który zosta� napisany wcze�niej. Pami�taj, �e jego celem jest enkapsulacja ��da� doGraph API.

Teraz wró� do CustomGraphContainerController.as i usu� ca�y kod zwi�zany z ��daniem:

package controllers{ import ui.GraphControlContainer; public class CustomGraphContainerController extends GCController { public function CustomGraphContainerController(a_graphControlContainer: �GraphControlContainer) { super(a_graphControlContainer); } }}

CustomGraphContainerController dziedziczy zmienn� typu protected o nazwie _requestor poklasie IRequestor, a tak�e metod� s�u��c� do dodawania potrzebnych detektorów zdarze�, pozo-staje wi�c wprowadzenie tylko nast�puj�cych zmian:

Page 35: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

57

package controllers{ import graph.apis.http.HTTPRequestor; import graph.GraphRequest; import ui.GraphControlContainer; public class CustomGraphContainerController extends GCController { public function CustomGraphContainerController(a_graphControlContainer: �GraphControlContainer) { super(a_graphControlContainer); _requestor = new HTTPRequestor(); addEventListenersToRequestor(); _requestor.request(new GraphRequest("PacktPub")); } }}

Skompiluj i uruchom SWF, rozwi� pole Connections (po��czenia) i kliknij posts (posty).

Doskonale! Pojawi� si� renderer listy Graph, czarna linia ��cz�ca list� ze stron� wskazuje, �eistnieje pomi�dzy nimi po��czenie. Co z innymi po��czeniami? Spróbuj klikn�� statuses (in-formacje o statusach).

Error #2044: Unhandled ioError:.text=Error #2032: Stream Error.URL:https://graph.facebook.com/204603129458/statuses?metadata=1

Niedobrze.

Page 36: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

58

Co si� zdarzy�o?Je�li wpiszesz k�opotliwy URL w przegl�darce (https://graph.facebook.com/packtpub/statuses),zobaczysz nast�puj�cy komunikat:

{ "error": { "type": "OAuthAccessTokenException", message": "An access token isrequired to request this resource." }}

B��d wyst�pi�, poniewa� nie by�e� zalogowany na Facebooku ze swojego SWF. W nast�pnymrozdziale pisz�, jak rozwi�za� ten problem.

Na razie mo�esz obej�� b��d, dodaj�c detektor zdarzenia IO_ERROR do URLLoader. W HTTPRequestor.aszmodyfikuj metod� request():

public function request(a_request:GraphRequest):void{ var loader:URLLoader = new URLLoader(); var urlRequest:URLRequest = new URLRequest(); var variables:URLVariables = new URLVariables();

//tworzymy URL z parametrów GraphRequest urlRequest.url = "https://graph.facebook.com/" + a_request.objectID; if (a_request.connectionID) { urlRequest.url += "/" + a_request.connectionID; } variables.metadata = 1; urlRequest.data = variables;

//s�u�y do ustalania, który GraphRequest utworzy� okre�lony //URLLoader w czasie dalszego dzia�ania _requests[loader] = a_request; loader. addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.load(urlRequest);}

Musisz zaimportowa� klas� flash.events.IOErrorEvent. Nast�pnie w tej samej klasie utwórzprost� funkcj� obs�uguj�c� zdarzenie, aby wy�wietli� zawarto�� b��du:

private function onIOError(a_event:IOErrorEvent):void{ trace(a_event.text);}

W ten sposób zobaczysz informacj� o b��dzie w oknie wyj�cia, ale b��d nie spowoduje zawieszenia SWF.Uwaga: blok try catch nie b�dzie dzia�a� dla b��du tego rodzaju.

Page 37: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

59

Po��czenia po��cze�Przyjrzyj si� rendererowi listy Graph utworzonemu po klikni�ciu po��czenia albums.

Czy czego� brakuje?

Brakuje zdj��! Po wczytaniu strony Packt Publishing na Facebooku mo�emy zobaczy� du�o zdj��,ale tutaj nie ma dla nich adresów URL. Sprawd to poprzez za�adowanie listy Graph w przegl�-darce; nawet z flag� ?metadata=1 nic nie wskazuje, gdzie mog� by� zdj�cia:

{ "data": [ { "id": "471535759458", "from": { "name": "Packt Publishing", "category": "Products_other", "id": "204603129458" }, "name": "Profile pictures", "link": "http://www.facebook.com/album.php?aid=280961&id=204603129458", "count": 1, "type": "profile", "created_time": "2010-09-30T10:13:53+0000", "updated_time": "2010-03-18T14:46:50+0000" },

Page 38: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

60

{ "id": "307932939458", "from": { "name": "Packt Publishing", "category": "Products_other", "id": "204603129458" }, "name": "Books", "description": "Packt Books", "link": "http://www.facebook.com/album.php?aid=180619&id=204603129458", "count": 32, "type": "normal", "created_time": "2010-02-04T12:32:17+0000", "updated_time": "2010-03-18T16:08:42+0000" } ], "paging": { "previous": "https://graph.facebook.com/204603129458/ albums?metadata=1&limit=25&since=2010-09-30T10%3A13%3A53%2B0000", "next": "https://graph.facebook.com/204603129458/ albums?metadata=1&limit=25&until=2010-02-04T12%3A32%3A16%2B0000" }}

Czas zacz�� dzia�a� — �adowanie zdj��z albumuZobaczy�e� jednak, �e ka�dy obiekt wewn�trz tablicy data jest obiektem Graph. Przyjrzyj si� al-bumowi Packt Books (ma ID 307932939458) poprzez wpisanie w przegl�darce https://graph.facebook.com/307932939458?metadata=1:

{ "id": "307932939458", "from": { "name": "Packt Publishing", "category": "Products_other", "id": "204603129458" }, "name": "Books", "description": "Packt Books", "link": "http://www.facebook.com/album.php?aid=180619&id=204603129458", "count": 32, "type": "album", "created_time": "2010-02-04T12:32:17+0000", "updated_time": "2010-03-18T16:08:42+0000", "metadata": {

Page 39: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

61

"connections": { "photos": "https://graph.facebook.com/307932939458/photos", "likes": "https://graph.facebook.com/307932939458/likes", "comments": "https://graph.facebook.com/307932939458/comments" }, }}

Tym razem metadane poda�y potrzebne informacje. Zdj�cia po��czone s� z obiektem Graphalbum za pomoc� po��czenia photos.

Uruchom SWF i ponownie za�aduj po��czenie albums. W rendererze przejd do obiektu Grapho nazwie Books i kliknij Pop Out. Nast�pnie rozwi� pole Connections renderera Books i kliknijphotos.

Co si� zdarzy�o?Kiedy brali�my pod uwag� wy��cznie po��czenie posts, nasz graf by� bardzo prosty: pomi�dzystron� i ka�dym elementem z ni� zwi�zanym istnia�o tylko jedno po��czenie.

Page 40: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

62

Teraz, kiedy dodali�my po��czenie albums, wszystko sta�o si� bardziej skomplikowane.

Musimy przemieszcza� si� po dwóch poziomach po��cze�, aby przej�� od strony do obiektów,których szukamy.

To nie koniec po��cze�. Zarówno albums, jak i photos mog� ��czy� si� z comments.

Page 41: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

63

Poza tym, ka�dy komentarz ma w�a�ciwo�� from, która ��czy go z u�ytkownikiem b�d�cym jegoautorem. U�ytkownik mo�e by� tak�e „oznaczony” jako pojawiaj�cy si� na zdj�ciu, co ��czy zdj�-cie z u�ytkownikiem.

Diagram sprawia wra�enie coraz bardziej skomplikowanego (podobie�stwo do matematycz-nego grafu jest ju� �atwo dostrzegalne). Oczywi�cie teraz, kiedy mamy do czynienia z wielomaludmi, liczba po��cze� staje si� ogromna. U�ytkownicy mog� by� po��czeni z dowolnym in-nym obiektem poprzez bycie znajomym innego u�ytkownika, oznaczenie na zdj�ciu, wideolub notatce, poprzez zamieszczanie komentarza, ��cza lub innego elementu lub klikni�cieLubi� to! dla dowolnego innego elementu na Facebooku.

Page 42: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

64

Je�li rozpoczniesz od okre�lonej strony i przejdziesz przez wszystkie obiekty, z którymi jestpo��czona, a nast�pnie przez po��czone z tymi obiektami kolejne i tak dalej, b�dziesz móg�przej�� przez ogromn� liczb� wierzcho�ków bez konieczno�ci zaczynania na nowej stronie.

Si�� Graphu jest elastyczno��. Ka�dy rodzaj obiektu Graph ma tak� sam� struktur� jak ka�dyinny, z wyj�tkiem list Graph, które mog� zawiera� tablice obiektów Graph. W�a�nie dlategonasz renderer obiektów Graph mo�e �atwo wy�wietla� dowolny rodzaj obiektu Graph.

Na pewno zauwa�y�e�, �e nie tylko komentarze maj� w�a�ciwo�� from? Maj� j� tak�e albumy,pojedyncze zdj�cia i niemal wszystkie rodzaje obiektów, które nie s� stron� lub u�ytkowni-kiem. Oznacza to, �e mo�esz zacz�� od dowolnego obiektu, znale� jego twórc� i przesuwa�si� coraz dalej na zewn�trz po grafie z tego punktu.

Model Graphu ma okre�lone skutki dotycz�ce prywatno�ci. Przypu��my, �e otrzymali�my do-st�p do informacji o stronie, dzi�ki czemu b�dziemy mieli dost�p do informacji o dowolnymobiekcie na tej stronie. W takim przypadku b�dziemy mogli przej�� z tej strony:

� do albumu umieszczonego na tej stronie i dalej,� do zdj�cia w tym albumie i dalej,� do u�ytkownika oznaczonego na tym zdj�ciu i dalej,� do listy postów na tablicy tego u�ytkownika i dalej,� do komentarza do jednego z tych postów umieszczonego przez znajomego

pierwszego u�ytkownika i dalej,� do u�ytkownika, który zamie�ci� ten komentarz, i dalej,� do programu TV, który ten u�ytkownik lubi, i dalej,� do ��cza umieszczonego na stronie tego programu TV i dalej,� do u�ytkownika, który umie�ci� to ��cze.

Page 43: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

65

I tak dalej. Nic dziwnego, �e Facebook korzysta z bardzo szczegó�owego zestawu regu� okre-�laj�cego zarówno to, do czego mo�e mie� dost�p u�ytkownik, jak i to, do czego mo�e mie�dost�p dzia�aj�ca w jego imieniu aplikacja. Regu�y te obja�ni� w kolejnym rozdziale.

Wszystko razemNa zako�czenie zobaczymy, jak daleko mo�emy przej�� po grafie, zaczynaj�c od strony PacktPublishing.

Czas zacz�� dzia�a� — przemieszczanie si�w GraphUstaw aplikacj� Visualizer tak, aby ��da�a strony PacktPub. Nast�pnie skompiluj i uruchomSWF, u�yj pola Connections (po��czenia) i przycisków Pop Out (wyskocz) do obejrzenia Graphu —zobacz, jak daleko mo�esz doj��. Nie zapomnij, �e mo�esz przeci�ga� renderery i zmniejsza�widok, aby zmie�ci� ich wi�cej w oknie odtwarzacza Flash Player! Pami�taj, �e czarne linieoznaczaj� po��czenia, a szare, �e obiekt nale�y do listy.

Na rysunku ni�ej pokazano, jak mo�e wygl�da� aplikacja po kilku klikni�ciach.

Page 44: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

66

Mo�na ju� dostrzec podobie�stwo do rozbudowanych diagramów grafu pokazanych wcze-�niej w tym rozdziale.

Co si� zdarzy�o?Napisa�e� kod dla RIA, który pozwala na badanie ca�ego publicznie dost�pnego Graphu.Rozpocz�� mo�esz w dowolnym punkcie. Innymi s�owy, utworzy�e� we Flashu szperacza dlaFacebooka.

Do prze�wiczenia — badanie innych obszarówNie musisz zaczyna� podró�y od strony PacktPub. Spróbuj zmieni� pocz�tkow� instancj� Graph�Request, tak aby za��da�a strony Facebooka — Facebook — lub publicznego profilu MarkaZuckerberga — markzuckerberg — lub innej strony znanego zespo�u, firmy lub osoby.

U�wiadom sobie, �e nie jeste� ograniczony do pojedynczego GraphRequest, mo�esz utworzy�ich tyle, ile b�dziesz chcia�. Spróbuj utworzy� kilka jednocze�nie i zobacz, czy ich efekty b�-d� si� pokrywa�!

Przyjrzyj si� w oknie wyj�cia informacjom mówi�cym, �e nie da�o si� uzyska� obiektu lub listyGraph. Czy przyczyna jest zawsze taka sama?

Quiz 1. Co oznacza parametr ?metadata=1 u�yty w Graph URL?a. Sprawia, �e metadane s� widoczne.b. Sprawia, �e metadane s� niewidoczne.

2. Ile poziomów mo�esz przej�� w Graphie, gdy zaczniesz od dowolnej strony?a. Jeden.b. Dwa.c. Dziesi��.d. Niesko�czenie wiele.

3. To prawda czy fa�sz: je�li JSON zwrócony z Graph URL zawiera obiekt data, tozawsze mo�emy przyj��, �e jest to lista Graph?a. Prawda.b. Fa�sz.

4. To prawda czy fa�sz: je�li JSON zwrócony z Graph URL nie zawiera obiektu data,to zawsze mo�emy przyj��, �e jest to obiekt Graph?a. Prawda.b. Fa�sz.

Page 45: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Rozdzia� 2. • Witaj w Graphie

67

PodsumowanieW tym rozdziale nauczy�e� si� wiele o Graph API; dowiedzia�e� si� nie tylko tego, czym jest,ale tak�e jak u�ywa� go z AS3.

Oto najwa�niejsze informacje do zapami�tania.

� Graph API nosi tak� nazw�, poniewa� prezentuje wszystkie dane Facebooka w postaciwielkiego grafu z obiektami i po��czeniami.

� Graph API zawiera dwa rodzaje elementów: obiekty Graph i listy Graph.� Obiekty Graph maj� dwa ID: numeryczny wskazany przez Facebook oraz (jest to tylko

mo�liwo��) alfanumeryczny wskazany przez w�a�ciciela obiektu.� Obiekty Graph maj� po��czenia; po��czenia prowadz� do list Graph, listy Graph

zawieraj� obiekty Graph.� Format Graph URL s�u��cy do uzyskiwania obiektów Graph jest nast�puj�cy:

https://graph.facebook.com/graph_object_id.� Format Graph URL s�u��cy do uzyskiwania list Graph jest nast�puj�cy:

https://graph.facebook.com/graph_object_id/connection_id.� Adresy Graph URL zwracaj� dane w formacie JSON. Jest to format tekstowy

wykorzystuj�cy pary klucz-warto�� do reprezentowania obiektów zawieraj�cychw�a�ciwo�ci, tablice i inne obiekty.

� Czasem Graph URL zwracaj� komunikaty o b��dach, one tak�e u�ywaj� formatuJSON.

� Mo�emy u�y� parametru ?metadata=1 w Graph URL do spowodowania, abyzwróci� dodatkowe informacje o elemencie, np. list� po��cze� wychodz�cychz obiektu Graph.

� Dla obiektów Graph, które s� cz��ci� list Graph, metadane nie s� zwracane.� Reprezentacja w JSON obiektu Graph mo�e zosta� poddana deserializacji na

obiekt AS3, którego mo�emy u�y� w kodzie za pomoc� biblioteki as3corelib.

Mówi�em tak�e o tym, dlaczego Graph API jest tak elastyczny — u�ywa tej samej strukturydla ka�dego rodzaju obiektu w bazie danych Facebooka.

Jednak co zrobi� z obiektami, które zwróci�y b��d autoryzacji, kiedy próbowali�my uzyska�informacje na ich temat? Zajmiemy si� nimi w kolejnym rozdziale.

Page 46: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Skorowidz

AAbout, 268, 271access_token, 84accessToken, 182actions, 191, 198ActionScript, 93

API, 260Add to my Page, 257Adobe

Social, 275ActionScript 3 SDK for

Facebook Platform, 113SDK dla platformy

Facebook, 27adres URL, 79Advanced, 267, 268agent u�ytkownika, 79

porz�dek dzia�ania, 83AIR, 207, 261, 264

autoryzacja, 261dla systemu Android, 265

autoryzacja, 265aktualizacje w czasie

rzeczywistym, 276aktualno�ci, 166album, 215

dodanie zdj�cia, 216albums, 61, 62alert(), 28all.js, 113ALL_FRIENDS, 202ampersand, 80Android autoryzacja, 265

API, Patrz Graph APIKey, 76klucz, 76, 114URL, 227aplikacjaautoryzacja, 74desktopowa, 84identyfikator, 76klucz sekretny, 76rejestracja, 75uwierzytelnianieAS3, 85JavaScript, 92–99w aplikacji, 90AppData, 278ApplicationID, 76Profile, 270Secret, 76Array.join(), 103AS3, 34escape(), 131Facebook SDK, 106URLVariables, 142as3corelib, 27, 38ASP.NET, 276attribution, 196autoryzacja, 69, 74aplikacji, 74Graph URL, 115u�ytkownika, 74w systemie Android, 265

za pomoc�AIR i HTTP, 261AIR i SDK, 264

BBasic directory information, 73baza danych, 224b��d, 278

system �ledzenia, 278wykrywanie, 27, 184

bogata aplikacja internetowa,Patrz RIA

Bookmark URL, 254, 268browse(), 216

CCanvas

Page, 253Type, 253URL, 253

caption, 191, 192center, 152, 176checkin, 152checkins, 217comments, 62, 210COMPLETE, 42connectionID, 54Connections, 52contentLoaderInfo, 42coordinates, 218currying, 111CUSTOM, 202

Page 47: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

284

Ddane

modelGraphu, 226obiektowy, 225relacyjnej bazy danych, 226

reprezentacja, 226uwierzytelniaj�ce, 74

data, 44Date, 85De MonsterDebugger, 28Deauthorize Callback, 267Delete, 204DELETE, 207deleteGraphObject(), 205description, 191, 192, 215deserializacja, 67

JSON, 38detektor zdarzenia, 58, 184, 261Developer, 76, 253Developers, 268DialogEvent, 27, 183DisplayObject, 42, 261distance, 152, 176Distractor, 274domena nazwa, 23dost�p do danych bitowych

obrazu, 195dynamic, 40

EEdit URL, 256edytor HTML, 23edytuj adres URL, 256end_time, 214enkapsulacja ��da�, 56event, 152EVERYONE, 202expires_in, 84ExtendedPermissions.as, 104ExternalInterface, 93, 97, 115

FFacebook, 17

Chat API, 275Credits, 277

Indie Games, 278Integration, 256, 268Integrations, 254konto, 21Messages, 20Places, 20, 217Query Language, Patrz FQLrejestracja, 21zasady, 273

Facebook.api(), 109, 188Facebook.login(), 113Facebook.postData(), 190FarmVille, 21FBJSBridge.js, 113FBML, 252, 255feed, 120, 137, 178FileReference, 216filtrowanie

wyników wyszukiwania, 176list Graph za pomoc� UI,

133Flash, 42

Tracer for Firebug, 28flash.display.Loader, 42FQL, 224, 248

ograniczenia, 243friends_interests, 102FRIENDS_OF_FRIENDS,

202from, 63, 64

Gg�ówny ID tablicy, 234gra Flash integracja z

Facebookiem, 260Graffiti, 270, 271Graph

API, 21, 30, 31, 34, 35, 44,45, 67elastyczno��, 67

lista, 46, 49, 67liczba obiektów, 118po��cze� obiektu, 51stronicowanie, Patrz

stronicowanie��danie wi�kszej liczby

obiektów, 121obiekt, 67

URL, 32, 67, 115dost�p do profilu, 73

GraphRequest, 54group, 152grupa przynale�no��, 70

Hhash, 261hiper��cze, 200host www, 22hosting www, 22HTMLLoader, 261HTTP GET, 181HTTPStatusEvent, 184

Iicon, 196Icon, 268ID, 34, 67

aplikacji, 114tablicy g�ówny, 234��danie kilku

jednocze�nie, 138identyfikator aplikacji, 76ids, 139IFrame, 252

Size, 254IMDB, 258IN, 239incognito, 70indeks, 243informacja o statusie, 190informacje profilowe, 73initComplete(), 107InPrivate, 71Inside

Facebook, 278Social Games, 278Virtual Goods, 278

InsideNetwork, 278Insights, 275inteligentne

sortowanie, 145wyszukiwanie, 144

Interests, 276Internationalization API, 275IO_ERROR, 58

Page 48: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Skorowidz

285

JJavaScript

Object Notation, Patrz JSONJavaScript SDK, 274

JSON, 37, 67, 198, 228deserializowanie, 38serializowanie, 38

JSON.encode(), 218

Kkanwa, 253karta prywatna, 71katalog aplikacji Facebooka, 272klient FTP, 23klucz

API, 76, 114obcy, 234podstawowy tabeli, 234sekretny, 76, 114

kodUI, 35��dania, 53

HTTP, 56kodowanie URL, 131kolumna, 225komentarz, 210konto, 21

przegl�danie, 70kredyty Facebooka, 277

Llatitude, 218length, 120licznik, 268limit, 121, 125, 127, 141LIMIT, 247link, 191linkName, 192linkURL, 192lista

Graph, 46, 49, 67liczba obiektów, 118renderer, 46stronicowanie,

Patrz stronicowanie��danie wi�kszej liczby

obiektów, 121

po��cze� obiektu Graph, 51uprawnie� rozszerzonych

u�ytkownika, 241LiveDocs, 24load(), 36Loader, 42locale, 157, 176loginComplete, 109Logo, 268longitude, 218lower(string), 247Lubi� to!, 211

usuwanie, 212

�adowanie zdj�� z albumu, 61

Mme(), 247message, 180, 182, 191, 211,

213, 216, 218metainformacja, 43metoda ��dania, 181MinimalComps, 27Mochi

Media, 260Social Platform, 260

Nname, 191, 214, 215nazwa

domeny, 23tabeli, 256

NETWORKS_FRIENDS, 202NO_FRIENDS, 202notacja kurzej �apki, 235notatki, 212now(), 247

Oobiekt

Graph, 67lista w�a�ciwo�ci, 210publikowanie, 210

z�o�ony, 140, 141, 142��daj�cy, 53

objectID, 54odmowa dost�pu, 114offline_access, 105offset, 125, 127, 141OFFSET, 247ograniczenie dost�pu, 71, 73

Graph API, 73okno prywatne, 71onDeleteComplete(), 206onRedirect(), 262Open Graph, 276operacja przypisana do

aplikacji, 200operator w FQL

logiczny, 245porównania, 245

ORDER BY, 246ownerID, 197

PPackt Publishing, 32Page, 252

Tabs, 256PageData, 278paging, 44, 142pami�� podr�czna

czyszczenie, 29pe�ne wyszukiwanie, 146perms, 113photos, 61, 62PHP, 276picture, 191pictureURL, 192place, 218plik

regu�mi�dzydomenowych, 42

SWF, 28, 42pobieranie

informacji, 226z tablicy, 226ze strony, 35

list ID znajomychw FQL, 238

Page 49: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Facebook Graph API. Tworzenie rozbudowanych rozwi�za� we Flashu

286

podstawowe informacjeprofilowe, 73

podw�ze�, 140podzapytanie, 240pole, 225

indeksowane, 244po��czenie, 67

odwzorowanie w FQL, 230Pop Out, 49post, 45

na tablicy, 137niesformatowany, 196sformatowany, 191umieszczanie na dowolnej

tablicy, 196usuwanie

aplikacj�, 204poprzez interfejs

Facebooka, 204POST, 181, 182, 197posts, 45Preview my Profile, 73privacy, 191, 198, 200Privacy Settings, 89profil, 21, 32, 70

aplikacji, 270osobisty, 32publiczny, 32

protokó� OAuth 2.0, 83proxy PHP, 195prywatno�� posta, 201

ALL_FRIENDS, 202CUSTOM, 202EVERYONE, 202FRIENDS_OF_FRIENDS,

202NETWORKS_FRIENDS,

202przegl�danie prywatne, 71przemieszczanie si�

w Graph, 65przyznawanie uprawnie�

rozszerzonych, 186publikowanie

na innych tablicach, 196aplikacja, 197

na tablicy u�ytkownika, 178,181, 178–88

wymagane parametryi uprawnienia, 220

za pomoc�Facebook.api(), 188Facebook.postData(), 190HTTP, 210, 219SDK, 188, 220

Publish, 178, 210, 216publish(), 179, 197, 210, 216publish_checkins, 218publish_stream, 186, 197, 209,

211, 213, 215, 217PublishingCapabilities, 178PublishObject, 180, 197

Rramka, 252rand(), 247rejestracja, 21Remove, 204renderer, 35, 41, 51

listy Graph, 46obiektu Graph,

Patrz rendererreprezentacja danych, 226requestor, 53Reset View, 35rest parameter, 103RIA, 18Rozmiar IFrame, 254rozwijanie funkcji, 111RVSP, 214rzutowanie, 161

SSandbox Mode, 268scope, 101SDK, 107, 274SDKRequestor, 110SDKRequestor(), 107Search, 143SELF, 202serializowanie, 38serwer www, 21setAccessToken(), 96, 97Sharing on Facebook, 73

sie�przynale�no��, 70regionalna, 70spo�eczno�ciowa, 17

since, 131, 142Site URL, 79Social, 275SOME_FRIENDS, 203sortowanie, 246

inteligentne, 145SOS max, 28source, 191, 198, 203, 216SQL, 224StageWebView, 265start_time, 214status, 190statuses, 57strip_tags(), 247strlen(), 247strona, 141

kanwy, 253spo�eczno�ciowa, 32, 230z opakowaniem, 113zak�adka, 256zwrotna, 94

stronicowanie, 124, 141na podstawie

daty, 133, 138, 247liczb, 247

za pomoc�limit i offset, 128since i until, 131URL, 130

strpos(), 247subject, 213substr(), 247SWF, 22, 115SWFObject, 24system �ledzenia b��dów, 278

TTab

Name, 256URL, 256

tabela, 224��cza, 237

Page 50: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu

Skorowidz

287

tablicapublikowanie wpisów, 178,

181, 178–88znajomego, 21

thread, 277token dost�pu, 74, 78, 79, 81,

96, 114, 261, 263odbieranie, 96permanentny, 105wyga�ni�cie, 84informacje, 84

tryb przegl�daniaprywatnego, 70

Tutorial, 271twórca aplikacji, 76typ kanwy, 253type, 149, 176

warto�ci, 152

Uudost�pnianie

aplikacji, 268na Facebooku, 73

UI, 35, 133filtrowanie list Graph, 133

umieszczanie aplikacji online,252

until, 129, 142upper(string), 247uprawnienia, 69, 71, 114, 241

grupy, 71informacje, 242rozszerzone, 101, 105, 115

przyznawanie, 186u�ytkownika, 102, 241znajomych, 102��danie, 102, 113

u�ytkownika, 71URI, 80URL

kanwy, 253karty, 256zak�adki, 254

URLLoader, 36, 53, 216URLRequest, 36, 42URLVariables, 51user, 153user_checkins, 218

user_interests, 102user_photos, 215, 217ustawienia prywatno�ci, 71, 89usuwanie

oznaczenia Lubi� to!, 212,220

przez interfejs Facebooka,204

w AIR, 220za pomoc�

aplikacji, 204HTTP, 220SDK, 220

uwierzytelnianie, 114, 259aplikacji, Patrz aplikacja

uwierzytelnianieu�ytkownika metod�

Facebook.login(), 108u�ytkownik testowy, 277

VVisualizer, 27Vizzy Flash Tracer, 28

WWHERE, 239, 244wiersz, 225wizualizowanie informacji, 40wydarzenia, 213wykonanie zapytania, 227wykrywanie b��dów, 27, 184wysy�anie za pomoc�

HTTP, 220SKD, 220

wyszukiwanie, 158bez tokenu dost�pu, 176filtrowanie wyników, 176inteligentne, 144na podstawie zapytania, 162ograniczenia, 156opcje, 146, 147pe�ne, 146, 156

Posts by everyone, 156Posts by friends, 146, 156

po dokonaniu autoryzacji,154, 176

szablonowe, 145

w Twoich aktualno�ciach,165, 166, 176

w�ród postów znajomego,165, 167, 168, 177

wymagaj�ce uprawnie�rozszerzonych, 176

za pomoc�aplikacji, 170Graph API, 149Graph URL, 153, 156,

165, 176SDK, 162

wywo�ywaniekilku zapyta�

jednocze�nie, 248

XXML, 228

Zzabezpieczenia, 69,

Patrz ograniczenie dost�puzak�adka, 256Zak�adki strony, 256zameldowania, 217zapytanie, 227zdj�cie, 216

�adowanie do albumu, 61profilowe, 115

znacznik, 255Zoom

In, 35, 41Out, 35

Zuckerberg Mark, 32zwrotna strona, 94

���daj�cy obiekt, 53��danie, 53, 54

kilku ID jednocze�nie, 138metoda, 181uprawnie� rozszerzonych,

102za pomoc� SDK, 113

Page 51: Facebook Graph API.• Rejestracja aplikacji na Facebooku ... Tworzenie stron, grup, aplikacji i wideo 218 Modyfikowanie informacji biograficznych 219 ... Jako aplikacja AIR dla systemu