Programowanie aplikacji na serwisy spolecznosciowe prapse


Tytuł oryginału: Programming Social Applications: Building Viral Experiences with OpenSocial, OAuth,
OpenID, and Distributed Web Framework
Tłumaczenie: Mikołaj Szczepaniak
ISBN: 978-83-246-3944-1
© 2012 Helion S.A.
Authorized Polish translation of the English edition of Programming Social Applications, 1st Edition ISBN
9781449394912 © 2011 Yahoo!, Inc.
This translation is published and sold by permission of O Reilly Media, Inc., which owns or controls all
rights to publish and sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodÄ… kserograficznÄ…,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądz towarowymi ich
właścicieli.
Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje były kompletne
i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym
ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Pliki z przykładami omawianymi w książce można znalezć pod adresem:
ftp://ftp.helion.pl/przyklady/prapse.zip
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/prapse
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
" Kup książkę " Księgarnia internetowa
" Poleć książkę " Lubię to! Nasza społeczność
" Oceń książkę
Spis tre ci
S owo wst pne ............................................................................................................ 15
1. Podstawowe poj cia zwi zane z kontenerem aplikacji spo eczno ciowych ........... 21
Czym jest kontener aplikacji spo eczno ciowych? 22
Profil u ytkownika 23
Znajomi i powi zania u ytkownika 24
Strumie aktywno ci u ytkowników 24
Implementacja zastrze onych i otwartych standardów 25
Implementacja zastrze ona 25
Implementacja typu open source 26
Dlaczego w tej ksi ce zostan omówione otwarte standardy? 27
Wbudowana aplikacja  tworzenie rozwi za w ramach czarnej skrzynki 27
Wbudowane zabezpieczenia aplikacji 29
Ataki XSS 30
Zasada tego samego pochodzenia i starsze przegl darki 30
Pobieranie plików bez wiedzy u ytkownika 31
Zabezpieczanie aplikacji 31
Aplikacja zewn trzna  integracja danych serwisu spo eczno ciowego
poza kontenerem 31
Widoki aplikacji 32
Widok domowy (ma y) 33
Widok profilu (ma y) 34
Widok kanwy (du y) 35
Domy lny widok (dowolny) 36
Zagadnienia zwi zane z uprawnieniami aplikacji 37
Aplikacje strony klienckiej kontra aplikacje serwera 38
Stosowanie systemów szablonów w warstwie znaczników 38
Stosowanie mieszanego rodowiska serwera i klienta 39
Opó nianie adowania mniej wa nej tre ci 40
Kiedy dobra aplikacja okazuje si z a? 40
Przeno na aplikacja z animacjami 41
Niedopracowany widok 42
5
Poleć książkę
Kup książkę
Aplikacja kopiuj ca widoki 43
Aplikacja prezentuj ca zbyt du o informacji 43
Nierentowna aplikacja 44
Aplikacja informacyjna 45
Studia przypadków dla modeli aplikacji 46
Studium przypadku: gra spo eczno ciowa ze znajomymi 46
Studium przypadku: aplikacje sprzeda y produktów 50
Studium przypadku: aplikacje uwzgl dniaj ce po o enie u ytkownika 53
Krótkie wskazówki na pocz tek 56
Nale y zdefiniowa docelowych odbiorców 57
Mo liwie wczesne budowanie punktów integracji
z serwisem spo eczno ciowym 57
Budowanie z my l o elementach komercyjnych 57
Tworzenie dopracowanych, atrakcyjnych widoków 58
2. Odwzorowywanie relacji u ytkowników
na podstawie grafu powi za spo eczno ciowych ...................................................59
Graf powi za spo eczno ciowych w internecie 59
Stosowanie grafu rzeczywistych powi za spo eczno ciowych
w wirtualnym wiecie 61
Automatyczne dzielenie u ytkowników na klastry 62
Prywatno i bezpiecze stwo 62
Budowanie zaufania 63
Udost pnianie prywatnych danych u ytkownika:
model opt-in kontra model opt-out 63
Model udost pniania za zgod u ytkownika (opt-in) 63
Model wy czania udost pniania na wniosek u ytkownika (opt-out) 64
Zrozumienie modelu relacji 65
Model ledzenia 65
Model po cze 66
Model grupowy 67
Relacje kontra podmioty 71
Budowanie zwi zków spo eczno ciowych  analiza grafu powi za
spo eczno ciowych Facebooka 72
Budowanie na bazie rzeczywistych to samo ci 72
Zrozumienie najskuteczniejszych kana ów komunikacji 73
Budowanie grup u ytkowników 74
Unikanie grafów nieistotnych powi za spo eczno ciowych 74
Wskazywanie lubianych i nielubianych podmiotów za po rednictwem
protoko u OpenLike 75
Integracja widgetu OpenLike 75
Sposób prezentowania oznacze  Lubi to 76
Podsumowanie 76
6 Spis tre ci
Poleć książkę
Kup książkę
3. Tworzenie podstawowych elementów
platformy aplikacji spo eczno ciowych ...................................................................... 79
Czego nauczysz si w tym rozdziale? 79
Apache Shindig 79
Konfiguracja kontenera Shindig 80
Instalacja kontenera Shindig w systemie Mac OS X (Leopard) 81
Instalacja kontenera Shindig w systemie Windows 84
Testowanie instalacji kontenera Shindig 86
Partuza 87
Wymagania 88
Instalacja kontenera Partuza w systemie Mac OS X (Leopard) 88
Instalacja kontenera Partuza w systemie Windows 91
Testowanie instalacji kontenera Partuza 96
Specyfikacja gad etu OpenSocial w formacie XML 96
Konfigurowanie aplikacji za pomoc w z a ModulePrefs 97
Elementy Require i Optional 98
Element Preload 98
Element Icon 99
Element Locale 99
Element Link 100
Definiowanie preferencji u ytkownika 101
Wyliczeniowe typy danych 103
Tre aplikacji 103
Definiowanie widoków tre ci 104
Tre wbudowana kontra tre zewn trzna 110
Budowanie kompletnego gad etu 111
4. Definiowanie funkcji za pomoc odwo a JavaScriptu
do elementów standardu OpenSocial .......................................................................115
Czego nauczysz si w tym rozdziale? 115
Do czanie bibliotek JavaScriptu z funkcjami standardu OpenSocial 116
Dynamiczne ustawianie wysoko ci widoku gad etu 117
Umieszczanie animacji Flash w ramach gad etu 118
Wy wietlanie komunikatów dla u ytkowników 119
Tworzenie komunikatu 120
Okre lanie po o enia okien komunikatów 123
Definiowanie stylów komunikatów i okien 125
Zapisywanie stanu z preferencjami u ytkownika 127
Programowe ustawianie tytu u gad etu 129
Integracja interfejsu u ytkownika gad etu z podzia em na zak adki 130
Podstawowy gad et 131
Tworzenie zak adki na podstawie kodu j zyka znaczników 131
Tworzenie zak adki w kodzie JavaScriptu 132
Uzyskiwanie i ustawianie informacji na temat obiektu TabSet 134
Spis tre ci 7
Poleć książkę
Kup książkę
Rozszerzanie kontenera Shindig o w asne biblioteki j zyka JavaScript 136
Budowanie kompletnego gad etu 140
Przygotowanie specyfikacji XML gad etu 140
Wy wietlanie gad etu przy u yciu kontenera Shindig 144
5. Przenoszenie aplikacji, profili i znajomych .............................................................. 145
Czego nauczysz si w tym rozdziale? 145
Ocena obs ugi standardu OpenSocial 145
Podstawowe elementy specyfikacji OpenSocial 147
Specyfikacja podstawowego serwera API 148
Specyfikacja podstawowego kontenera gad etów 148
Specyfikacja serwera spo eczno ciowego interfejsu API 149
Specyfikacja kontenera gad etów spo eczno ciowych 149
Specyfikacja kontenera OpenSocial 150
Tworzenie rozwi za dla wielu kontenerów i przenoszenie aplikacji 150
Stosowanie mieszanego rodowiska klient-serwer 151
Oddzielanie funkcji spo eczno ciowych od podstawowego kodu aplikacji 151
Unikanie znaczników w a ciwych konkretnym kontenerom 151
Przenoszenie aplikacji z Facebooka do kontenera OpenSocial 152
Stosowanie ramek iframe dla konstrukcji nieb d cych
aplikacjami spo eczno ciowymi 152
Wyodr bnianie logiki funkcji Facebooka 153
Oddzielenie kodu znaczników (wizualizacji) od logiki programu 153
Stosowanie punktów ko cowych REST zamiast j zyka FQL 153
Stosowanie implementacji z zasadnicz cz ci kodu po stronie serwera 154
Personalizacja aplikacji na podstawie danych zawartych w profilu 154
Obiekt Person 154
Metody wymiany danych obiektu Person 155
Pola dost pne w ramach obiektu Person 160
Rozszerzanie obiektu Person 183
Uzyskiwanie profilu u ytkownika 189
Promowanie aplikacji z wykorzystaniem znajomych u ytkownika 191
Generowanie da dotycz cych znajomych u ytkownika 192
Budowanie kompletnego gad etu 193
Specyfikacja gad etu 193
Kod j zyka znaczników 194
Kod j zyka JavaScript 195
Uruchamianie gad etu 197
6. Aktywno u ytkowników, publikowanie powiadomie aplikacji
i danie danych w kontenerze OpenSocial ............................................................ 199
Czego nauczysz si w tym rozdziale? 200
Promocja aplikacji za pomoc strumienia aktywno ci w kontenerze OpenSocial 200
Personalizacja aplikacji na podstawie powiadomie w strumieniu aktywno ci 201
Generowanie powiadomie w celu zwi kszania liczby u ytkowników 202
8 Spis tre ci
Poleć książkę
Kup książkę
Pasywne i bezpo rednie publikowanie powiadomie aplikacji 205
Bezpo rednie publikowanie powiadomie aplikacji 206
Pasywne publikowanie powiadomie aplikacji 207
Zrównowa one publikowanie powiadomie 209
Generowanie da AJAX i da dost pu do danych zewn trznych 210
Generowanie standardowych da dost pu do danych 211
Umieszczanie tre ci w daniach danych 212
U ywanie autoryzowanych da do zabezpieczania po cze 213
Budowanie kompletnego gad etu 221
7. Zaawansowane techniki OpenSocial i przysz o tego standardu .........................225
Czego nauczysz si w tym rozdziale? 225
Potokowe przesy anie danych 225
Rodzaje da danych 228
Udost pnianie danych dla da zewn trznych 233
Korzystanie z potokowego przesy ania danych po stronie klienta 234
Obs uga b dów generowanych przez potok danych 237
Parametry dynamiczne 238
Szablony OpenSocial 240
Alternatywny model kodu j zyka znaczników i danych 241
Wy wietlanie szablonów 243
Wyra enia 247
Zmienne specjalne 248
Wyra enia warunkowe 250
Przetwarzanie tre ci w p tli 253
czenie potokowego przesy ania danych i szablonów 258
Pozosta e znaczniki specjalne 260
Biblioteki szablonów 262
Interfejs API j zyka JavaScript 265
Kilka dodatkowych znaczników  j zyk znaczników OpenSocial 270
Wy wietlanie nazwiska u ytkownika  znacznik os:Name 271
Lista wyboru u ytkownika  znacznik os:PeopleSelector 271
Wy wietlanie odznaki u ytkownika  znacznik os:Badge 272
adowanie zewn trznego kodu HTML  znacznik os:Get 272
Obs uga lokalizacji za pomoc pakietów komunikatów 272
Biblioteki API protoko u OpenSocial REST 275
Dost pne biblioteki 275
Przysz o standardu OpenSocial: obszary rozwoju 276
Kontenery korporacyjne 276
Mobilna rewolucja 277
Rozproszone frameworki internetowe 277
Standard OpenSocial i rozproszone frameworki internetowe 277
Standard Activity Streams 278
Protokó PubSubHubbub 278
Spis tre ci 9
Poleć książkę
Kup książkę
Protokó Salmon 279
Protokó Open Graph 280
Budowanie kompletnego gad etu 281
8. Zagadnienia zwi zane z bezpiecze stwem aplikacji spo eczno ciowych ............. 287
Czego nauczysz si w tym rozdziale? 287
Wykonywanie zewn trznego kodu za po rednictwem ramek iframe 288
Bezpieczny model  projekt Caja 288
Dlaczego warto u ywa kompilatora Caja? 289
Rodzaje ataków  jak Caja chroni u ytkownika? 289
Przekierowywanie u ytkowników bez ich zgody 290
ledzenie historii przegl darki u ytkownika 290
Wykonywanie dowolnego kodu za pomoc funkcji document.createElement 291
Rejestrowanie klawiszy naciskanych przez u ytkownika 291
Konfiguracja kompilatora Caja 293
Przetwarzanie skryptów za pomoc kompilatora Caja z poziomu wiersza polece 295
Zabezpieczanie kodu HTML-a i JavaScriptu 295
Zmiana docelowego formatu kodu 300
Uruchamianie kompilatora Caja z poziomu aplikacji internetowej 301
Stosowanie kompilatora Caja dla gad etu OpenSocial 303
Dodawanie kompilatora Caja do gad etu 303
Praktyczny przyk ad 304
Wczesne wykrywanie niebezpiecznych elementów JavaScriptu
za pomoc narz dzia JSLint 305
Eksperymenty w rodowisku Caja Playground 306
Wskazówki dotycz ce pracy w rodowisku Caja 306
Implementacja modu owego kodu  kompilatora Caja nie nale y stosowa
dla ca ego projektu 307
Stosowanie wst pnie przetworzonych bibliotek JavaScriptu 308
Nie nale y u ywa Firebuga dla przetworzonego kodu ród owego
JavaScriptu 309
Nie nale y umieszcza zdarze w kodzie j zyka znaczników 309
Centralizacja kodu JavaScriptu  stosowanie wy cznie da danych
i kodu j zyka znaczników 311
L ejsza alternatywa dla kompilatora Caja: narz dzie ADsafe 312
ADsafe kontra Caja  którego narz dzia u ywa ? 313
Jak zaimplementowa rodowisko ADsafe? 314
Konfiguracja obiektu rodowiska ADsafe 314
Obiekt DOM 315
Wybór konkretnych w z ów DOM za pomoc zapyta 317
Praca z obiektami pakietów 321
Do czanie zdarze 327
Definiowanie bibliotek 328
10 Spis tre ci
Poleć książkę
Kup książkę
Budowanie kompletnego gad etu 329
ród o danych 330
Sekcja nag ówkowa: do czane skrypty i style 330
Cia o: warstwa j zyka znaczników 332
Cia o: warstwa j zyka JavaScript 332
Ostateczny wynik 334
Podsumowanie 335
9. Zabezpieczanie dost pu do grafu powi za spo eczno ciowych
za pomoc standardu OAuth .................................................................................... 337
Punkt wyj cia  uwierzytelnianie podstawowe 337
Implementacja uwierzytelniania podstawowego  jak to dzia a? 338
Wady stosowania uwierzytelniania podstawowego 339
Standard OAuth 1.0a 340
Przep yw pracy w standardzie OAuth 1.0a 341
Standard OAuth z perspektywy u ytkownika ko cowego 348
Dwuetapowa autoryzacja OAuth kontra trzyetapowa autoryzacja OAuth 350
Przyk ad implementacji trzyetapowej autoryzacji OAuth 354
Narz dzia i wskazówki zwi zane z diagnozowaniem problemów 369
OAuth 2 373
Przep yw pracy w standardzie OAuth 2 373
Przyk ad implementacji: Facebook 381
Przyk ad implementacji: danie dodatkowych informacji na temat
u ytkownika w procesie autoryzacji OAuth w serwisie Facebook 392
Przyk ad implementacji: aplikacja z perspektywy u ytkownika ko cowego 394
Wskazówki dotycz ce diagnozowania problemów z daniami 396
Podsumowanie 400
10. Przysz o serwisów spo eczno ciowych:
definiowanie obiektów spo eczno ciowych
za po rednictwem rozproszonych frameworków sieciowych ................................ 401
Czego nauczysz si w tym rozdziale? 401
Protokó Open Graph  definiowanie stron internetowych
jako obiektów spo eczno ciowych 402
Wzloty i upadki metadanych 403
Dzia anie protoko u Open Graph 403
Implementacja protoko u Open Graph 404
Rzeczywisty przyk ad: implementacja protoko u Open Graph
w serwisie Facebook 410
Praktyczna implementacja: odczytywanie danych protoko u Open Graph
ze ród a w internecie 413
Wady protoko u Open Graph 419
Strumienie aktywno ci: standaryzacja aktywno ci spo eczno ciowych 420
Dlaczego warto zdefiniowa standard dla aktywno ci? 421
Implementacja standardu Activity Streams 421
Spis tre ci 11
Poleć książkę
Kup książkę
Typy obiektów 424
Czasowniki 426
WebFinger  rozszerzanie grafu powi za spo eczno ciowych na podstawie
adresów poczty elektronicznej 429
Od finger do WebFinger: geneza protoko u WebFinger 429
Implementacja protoko u WebFinger 430
Wady protoko u WebFinger 432
Protokó OExchange  budowanie grafu udost pniania tre ci spo eczno ciowych 433
Jak dzia a protokó OExchange? 433
Zastosowania protoko u OExchange 434
Implementacja protoko u OExchange 435
Protokó PubSubHubbub: rozpowszechnianie tre ci 440
Jak dzia a protokó PubSubHubbub? 441
Zalety z perspektywy wydawców i subskrybentów 443
Serwery hubów i us ugi implementacji 445
Biblioteki przep ywu pracy 445
Budowanie wydawcy w j zyku PHP 446
Budowanie wydawcy w j zyku Python 448
Budowanie subskrybenta w j zyku PHP 450
Budowanie subskrybenta w j zyku Python 452
Protokó Salmon: ujednolicenie stron konwersacji 455
Dzia anie protoko u Salmon 455
Budowanie rozwi za na bazie protoko u PubSubHubbub 457
Ochrona przed nadu yciami i spamem 458
Przegl d implementacji 459
Podsumowanie 460
11. Rozszerzanie grafu powi za spo eczno ciowych
za pomoc standardu OpenID ................................................................................... 461
Standard OpenID 461
Klucz do sukcesu  decentralizacja 462
Udoskonalenia wzgl dem tradycyjnego logowania 462
Dost p do istniej cej bazy danych u ytkowników
i grafu powi za spo eczno ciowych 462
Czy ju teraz dysponuj implementacj standardu OpenID?
Gdzie mam jej szuka ? 463
Procedura uwierzytelniania OpenID 464
Krok 1.: danie logowania przy u yciu identyfikatora OpenID 464
Krok 2.: operacja odkrywania w celu wyznaczenia adresu URL
punktu ko cowego 465
Krok 3.: danie uwierzytelnienia u ytkownika 466
Krok 4.: udost pnienie stanu sukcesu lub niepowodzenia 467
Dostawcy OpenID 469
Omijanie problemów odkrywania domen w standardzie OpenID 469
12 Spis tre ci
Poleć książkę
Kup książkę
Rozszerzenia standardu OpenID 471
Rozszerzenie Simple Registration 472
Rozszerzenie Attribute Exchange 473
Rozszerzenie Provider Authentication Policy Extension 479
Aktualnie tworzone rozszerzenia 483
Przyk ad implementacji: OpenID 484
Implementacja standardu OpenID w j zyku PHP 485
Implementacja standardu OpenID w j zyku Python 497
Typowe b dy i techniki diagnostyczne 508
Niezgodno adresu URL wywo a zwrotnych 509
Brak mo liwo ci odkrycia identyfikatora OpenID 509
Podsumowanie 510
12. Uwierzytelnianie hybrydowe
 wygoda u ytkownika i pe en dost p do profilu ..................................................511
Rozszerzenie hybrydy standardów OpenID i OAuth 511
Istniej ce implementacje 512
Kiedy nale y u ywa standardu OpenID, a kiedy jego hybrydy
ze standardem OAuth? 512
Pytania, na które warto sobie odpowiedzie
przed wybraniem w a ciwego rozwi zania 512
Zalety i wady: standardowa implementacja OpenID 513
Zalety i wady: uwierzytelnianie hybrydowe 514
Przebieg uwierzytelniania w modelu hybrydowym
na bazie standardów OpenID i OAuth 515
Kroki 1. i 2.: odkrywanie (pierwsze dwa kroki procedury OpenID) 516
Krok 3.: akceptacja uprawnie przez u ytkownika 516
Krok 4.: przekazanie stanu akceptacji/odrzucenia dania OpenID
i parametrów rozszerzenia hybrydowego 517
Krok 5.: wymiana wst pnie zaakceptowanego tokenu dania
na token dost pu 519
Krok 6.: generowanie podpisanych da dost pu do chronionych
danych u ytkownika 520
Przyk ad implementacji: OpenID, OAuth i Yahoo! 521
Konfiguracja aplikacji: uzyskanie kluczy standardu OAuth na potrzeby
procesu uwierzytelniania hybrydowego 521
Implementacja uwierzytelniania hybrydowego w j zyku PHP 522
Implementacja uwierzytelniania hybrydowego w j zyku Python 533
Podsumowanie 546
Dodatek A Podstawowe zagadnienia zwi zane z budow aplikacji internetowych .......547
Dodatek B S ownik poj .....................................................................................................563
Skorowidz .................................................................................................................. 567
Spis tre ci 13
Poleć książkę
Kup książkę
14 Spis tre ci
Poleć książkę
Kup książkę
ROZDZIA 6.
Aktywno u ytkowników,
publikowanie powiadomie aplikacji
i danie danych
w kontenerze OpenSocial
Do najwi kszych wyzwa stoj cych przed programistami buduj cymi aplikacje spo eczno-
ciowe nale y w a ciwa promocja tych aplikacji i efektywne korzystanie z zewn trznych ró-
de danych. Prawid owe stosowanie zewn trznych róde danych jest warunkiem utworzenia
bogatego zbioru funkcji, które przyci gn uwag u ytkowników i pozwol zbudowa baz
lojalnych klientów.
Wielu programistów traktuje kwestie publikowania komunikatów aplikacji i analizy aktywno-
ci jako nieistotny szczegó  uwa aj oni, e architektura, która ma na celu zwi kszanie bazy
aktywnych u ytkowników, nie ma wi kszego znaczenia. Okazuje si jednak, e standardowe
metody promocji aplikacji oferowane przez kontenery, czyli na przyk ad galerie, nie stanowi
efektywnych form zach cania u ytkowników do instalowania kolejnych rozwi za . W wielu
przypadkach galerie s przepe nione i nieczytelne  nierzadko obejmuj tysi ce aplikacji
uporz dkowanych w taki sposób, aby na najcenniejszych, najwy szych pozycjach znajdowa y
si najbardziej popularne produkty. Z perspektywy nowego programisty taki kszta t galerii
oznacza nie tylko konieczno konkurowania z wieloma aplikacjami, ale te wizj startu z naj-
mniej atrakcyjnej pozycji. Sytuacja przypomina troch problem historii kredytowej  brak
kredytów jest cz sto traktowany na równi z nieterminowo sp acanymi kredytami.
Warto wi c rozwa y promocj aplikacji z wykorzystaniem aktywno ci samych u ytkowni-
ków, przy zastosowaniu przemy lanego modelu udost pniania informacji o produktach. Takie
rozwi zanie umo liwia przekazywanie linków do aplikacji bezpo rednio w strumieniu codzien-
nej aktywno ci u ytkownika. Innym czynnikiem u atwiaj cym przyci ganie uwagi u ytkow-
ników jest regularnie od wie ana, atrakcyjna tre aplikacji (uzyskiwana za po rednictwem
da danych). W ten sposób mo na nie tylko podnie liczb u ytkowników instaluj cych
aplikacj , ale tak e zwi kszy ich aktywno .
199
Poleć książkę
Kup książkę
Czego nauczysz si w tym rozdziale?
W rozdziale 5. omówili my metody personalizacji i dostosowywania aplikacji na podstawie
informacji zawartych w profilu u ytkownika oraz techniki promocji z wykorzystaniem listy
znajomych u ytkownika. W tym rozdziale wspomniane zagadnienia zostan dodatkowo roz-
wini te  skoncentrujemy si na reprezentacji aktywno ci u ytkowników w kontenerze Open-
Social i na technikach tworzenia aplikacji oferuj cych szerokie mo liwo ci konfiguracji i dosto-
sowywania (dzi ki bogatym ród om danych budowanym przy u yciu da do róde
zewn trznych). W tym rozdziale zostan omówione nast puj ce zagadnienia:
personalizacja stanu aplikacji pod k tem u ytkownika na podstawie jego aktywno ci
spo eczno ciowej;
poszerzanie bazy u ytkowników poprzez generowanie czynno ci;
wyja nienie modeli pasywnego i bezpo redniego publikowania powiadomie aplikacji;
generowanie da danych niezb dnych do budowy bogatych róde danych i zwi ksza-
nia liczby aktywnych u ytkowników;
tworzenie uwierzytelnionych (podpisanych) da danych dla zapewnienia bezpiecze stwa
(poprzez weryfikacj danych uwierzytelniaj cych i róde danych).
Po opanowaniu wymienionych zagadnie i technik b dzie mo na przyst pi do budowy apli-
kacji spo eczno ciowych dobrze przygotowanych do promocji w ród u ytkowników.
Promocja aplikacji za pomoc strumienia aktywno ci
w kontenerze OpenSocial
Jednym z najskuteczniejszych narz dzi w r kach programistów aplikacji spo eczno ciowych
jest mo liwo wysy ania powiadomie (aktualizacji) do strumienia aktywno ci u ytkownika.
Strumie aktywno ci (patrz rysunek 6.1) jest centralnym obszarem powiadomie kierowa-
nych do u ytkownika aplikacji i jego znajomych. Strumie aktywno ci stanowi te g ówny
kana komunikacji z u ytkownikami kontenera. Za po rednictwem tego medium mo na pro-
mowa aplikacj poprzez rozsy anie zach t trafiaj cych do jak najwi kszej liczby u ytkowników.
Oznacza to, e strumie aktywno ci umo liwia nieporównanie skuteczniejsze zwi kszanie
liczby u ytkowników aplikacji ni zwyk a galeria aplikacji.
Rysunek 6.1. Strumie aktywno ci OpenSocial obejmuj cy obrazy i komentarze
200 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
W przypadku wi kszo ci kontenerów aplikacji spo eczno ciowych elementy strumienia aktyw-
no ci obejmuj nast puj ce dane:
tytu opisuj cy czynno u ytkownika;
link do ród a aktualizacji (powiadomienia), na przyk ad do samej aplikacji;
opis obejmuj cy dodatkowe informacje na temat danej aktualizacji lub zach ta do dzia ania
(na przyk ad do zainstalowania aplikacji przez pozosta ych u ytkowników);
opcjonalne elementy multimedialne, jak animacja czy obraz, które mog dodatkowo przy-
ci gn uwag u ytkowników;
komentarze lub oznaczenia  lubi to od znajomych u ytkownika.
Tylko dobre zrozumienie sk adników strumienia aktywno ci umo liwi programi cie pe ne
wykorzystanie potencja u tego strumienia. Standard OpenSocial udost pnia dwa narz dzia
do operowania na powiadomieniach w strumieniu aktywno ci  pierwsze z nich umo liwia
programistom wykorzystywanie istniej cych elementów strumienia do personalizacji aplikacji,
drugie umo liwia generowanie nowych elementów strumienia w celu przyci gania nowych
u ytkowników lub zwi kszania zaanga owania dotychczasowych.
Personalizacja aplikacji na podstawie powiadomie
w strumieniu aktywno ci
Je li profil obejmuje dane wybrane przez samego u ytkownika, które w dodatku odzwiercie-
dlaj sposób postrzegania u ytkownika przez niego samego, strumie aktywno ci dobrze
ilustruje to, co robi i co lubi ten u ytkownik. Strumie aktywno ci obejmuje takie informacje jak
wykaz instalowanych aplikacji, lista aktualizacji (powiadomie ) tych aplikacji oraz informacje
o statusie i profilu. Strumie aktywno ci jest te bezcennym ród em dodatkowych danych,
które pozwalaj lepiej oceni internetowe zwyczaje, preferencje i uprzedzenia u ytkownika.
Strumie aktywno ci stosowany cznie z informacjami zawartymi w profilu u ytkownika
stanowi dla programisty wprost doskona okazj do przygotowania tre ci i reklam pod k tem
konkretnego u ytkownika.
Strumie aktywno ci u ytkownika jest jednym z najcenniejszych róde informacji w ka dym
serwisie spo eczno ciowym. Za po rednictwem tego strumienia programista ma dost p do
takich informacji jak to, kiedy u ytkownik wysy a wiadomo ci, z kim si kontaktuje, co robi
i z jakich aplikacji korzysta.
Specyfikacja OpenSocial definiuje standardowe metody uzyskiwania tych szczegó owych danych:
// uzyskuje dane o aktywno ci bie cego u ytkownika
osapi.activities.get({userId: '@viewer ', count: 20}).execute(function(result){
if (!result.error){
var activities = result.list;
var html = ' ';
// buduje tytu i adres URL dla ka dej odkrytej czynno ci
for (var i = 0; i < activities.length; i++){
html += 'Tytu czynno ci: ' + activities[i].title +
'Adres URL czynno ci: ' + activities[i].url;
}
}
});
Promocja aplikacji za pomoc strumienia aktywno ci w kontenerze OpenSocial 201
Poleć książkę
Kup książkę
Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
W ramach tego dania wywo ano metod osapi.activities.get(...), aby zasygnalizowa
potrzeb pobrania strumienia aktywno ci u ytkownika. Obiekt JSON, który przekazano za
po rednictwem parametru tej metody, reprezentuje identyfikator u ytkownika (wskazuj cy
u ytkownika aktualnie korzystaj cego z aplikacji) oraz liczb oczekiwanych czynno ci (w tym
przypadku równ 20).
Po zwróceniu odpowiedzi dla tego dania mo na przyst pi do analizy i dowolnego wyko-
rzystywania poszczególnych czynno ci.
Generowanie powiadomie
w celu zwi kszania liczby u ytkowników
Wiele kontenerów aplikacji spo eczno ciowych udost pnia przepe nione, nieczytelne galerie,
w których nowe aplikacje s spychane na najmniej atrakcyjne pozycje. W ten sposób twórcy
kontenerów zapobiegaj przes anianiu podstawowych funkcji spo eczno ciowych przez okna
dodatkowych aplikacji. Taki kszta t typowych galerii stanowi powa ny problem dla progra-
mistów aplikacji  skoro budowane aplikacje trafiaj do podzak adek lub innych trudno dost p-
nych miejsc w ramach kontenera, jak mo na dotrze do nowych u ytkowników?
Jedn z najlepszych metod zach cania u ytkowników do instalowania aplikacji jest promocja
produktu za po rednictwem strumieni aktywno ci u ytkowników. Strumie aktywno ci to
jedna z niewielu dróg docierania do u ytkowników (je li oczywi cie sam kontener nie udost pnia
atrakcyjnych miejsc dla okien aplikacji). Wi kszo programistów, którzy zdecydowali si
umie ci w strumieniu aktywno ci nowe, odpowiednio atrakcyjne i przyci gaj ce uwag
powiadomienia, obserwowa a nieporównanie wi kszy wzrost zainteresowania swoimi produk-
tami ni po umieszczeniu tych samych aplikacji w galerii.
Okazuje si , e specyfikacja OpenSocial definiuje prost metod j zyka JavaScript obs ugu-
j c umieszczanie nowych czynno ci w strumieniu aktywno ci. Za pomoc tej metody pro-
gramista mo e promowa swoj aplikacj , kieruj c do u ytkowników specjalnie przygotowane
komunikaty.
Umieszczanie komunikatu w strumieniu aktywno ci u ytkownika
W kontenerze zgodnym ze standardem OpenSocial 0.9 do umieszczania aktualizacji (powia-
domie ) w strumieniu aktywno ci u ytkownika s u y metoda osapi.activities.create(...).
Metoda umo liwia programi cie atwe wysy anie komunikatów z aplikacji do strumienia
aktywno ci lub dowolnego innego kana u przekazywania powiadomie , który jest obs ugiwany
przez dany kontener.
Metoda osapi.activities.create(...) otrzymuje na wej ciu jeden parametr  obiekt JSON
zawieraj cy parametry dania dotycz cego elementów strumienia aktywno ci (patrz tabela 6.1).
Za pomoc parametrów opisanych w tabeli 6.1 mo na zbudowa blok j zyka JavaScript umiesz-
czaj cy now aktualizacj w strumieniu aktywno ci u ytkownika:
202 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
Tabela 6.1. Parametry dania elementu strumienia aktywno ci obs ugiwane przez metod osapi.activities.create
Parametr Opis
activity
Obiekt Activity standardu OpenSocial definiuj cy tre wysy anego powiadomienia.
auth
Obiekt AuthToken definiuj cy rodzaj autoryzacji (na przyk ad HttpRequest.Authorization).
appId
a cuch identyfikatora wskazuj cy aplikacj , która wys a a dane powiadomienie (aktualizacj ). Kontener mo e u y
tego identyfikatora do automatycznego wy wietlenia w ramach powiadomienia szczegó owych informacji o aplikacji
i linków prowadz cych na jej stron .
groupId
Identyfikator grupy, do której nale y wys a nowe powiadomienie (na przyk ad @self).
userId
Identyfikator u ytkownika, do którego ma zosta przypisana tworzona aktualizacja (na przyk ad @me, @viewer
lub @owner). Ten parametr mo e mie posta a cucha lub tablicy a cuchów.
// umieszcza nowe powiadomienie w strumieniu aktywno ci bie cego u ytkownika
osapi.activities.create({
userId: "@viewer",
groupId: "@self",
activity: {
title: "Moja aplikacja robi mnóstwo przydatnych rzeczy",
body: "Kliknij tutaj, aby uzyska wi cej informacji",
url: "http://www.mysite.com/"
}
}).execute();
Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
Aby wygenerowa powiadomienie (aktualizacj ), w powy szym kodzie wywo ano metod
osapi.activities.create(...) i przekazano na jej wej ciu odpowiednio przygotowany obiekt
JSON. W ramach tego obiektu nale y wskaza strumie aktywno ci, do którego ma trafi
nowa aktualizacja (w tym przypadku b dzie to strumie bie cego u ytkownika aplikacji),
grup docelow (tutaj self) oraz obiekt activity reprezentuj cy tre powiadomienia. W powy -
szym kodzie obiekt activity zawiera tytu , adres URL wskazywany przez link w tytule oraz
opis (cia o) aktualizacji. Cia o aktualizacji mo e obejmowa niewielki podzbiór znaczników
j zyka HTML, w tym , , oraz . Wykonanie tego kodu spowoduje umieszczenie
nowej aktualizacji w strumieniu aktywno ci wskazanego u ytkownika.
Ustawianie priorytetu aktualizacji
Podczas umieszczania w strumieniu aktywno ci powiadomienia dla u ytkownika nale y zagwa-
rantowa mo liwo wysy ania powiadomie aplikacji w imieniu samego u ytkownika, nawet
je li ten u ytkownik wprost nie przekaza aplikacji odpowiednich uprawnie . Takie dzia anie
jest mo liwe dzi ki priorytetom czynno ci.
Aby ustawi priorytet powiadomienia, nale y ustawi opcjonaln flag priority. To pole logiczne
mo e zawiera albo warto 0 (niski priorytet), albo warto 1 (wysoki priorytet). Stosowana
warto powinna zale e od tego, czy u ytkownik b d cy adresatem powiadomienia nada apli-
kacji odpowiednie uprawnienia. Innym wa nym czynnikiem jest implementacja samego kon-
tenera. Je li programista zdefiniowa wysoki priorytet (1) i je li u ytkownik nie da aplikacji
uprawnie do umieszczania aktualizacji w jego imieniu, aplikacja podejmie prób za adowa-
nia mechanizmu uwierzytelniania, aby zapyta u ytkownika o zgod na umieszczenie nowego
Promocja aplikacji za pomoc strumienia aktywno ci w kontenerze OpenSocial 203
Poleć książkę
Kup książkę
elementu w strumieniu aktywno ci. Je li programista ustawi niski priorytet (0) i je li u ytkow-
nik nie da aplikacji niezb dnych uprawnie , aktualizacja zostanie zignorowana, a u ytkownik
nie zostanie zapytany o zgod na umieszczenie nowej aktualizacji w strumieniu aktywno ci.
Ustawienie flagi priority wymaga umieszczenia odpowiedniej warto ci w obiekcie JSON prze-
kazywanym podczas tworzenia dania:
// umieszcza nowe powiadomienie z wysokim priorytetem w strumieniu aktywno ci bie cego u ytkownika
osapi.activities.create({
userId: "@viewer",
activity: {
title: "Wi cej informacji mo na znale na moim blogu",
url: "http://www.nakedtechnologist.com/",
priority: 1
}
}).execute();
Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
W powy szym przyk adzie u ytkownik, który nie nada aplikacji uprawnie do umieszcza-
nia powiadomie w swoim strumieniu aktywno ci, jest proszony o zgod na dodanie nowej
aktualizacji. Pytanie o zgod mo e by wy wietlone, je li na przyk ad u ytkownik nie zezwoli
danej aplikacji na dost p do swoich danych spo eczno ciowych lub je li przegl da t aplikacj
w trybie podgl du.
Wzbogacanie aktualizacji o tre ci multimedialne
Do czanie elementów multimedialnych do powiadomie umo liwia wzbogacenie interakcji
z tre ci umieszczan w strumieniu aktywno ci i du o skuteczniejsze przyci ganie uwagi
u ytkownika ni w przypadku standardowego tekstu i linków. Stosowanie elementów multi-
medialnych jest wi c wietnym sposobem zwi kszania liczby odbiorców, którzy zdecyduj si
na bli sze poznanie i zainstalowanie promowanej aplikacji.
danie wys ania powiadomienia obejmuje opcjonalne pole mediaItems, w którym programista
mo e umieszcza obrazy, pliki audio i zapisy wideo wzbogacaj ce tre aktualizacji.
Do tworzenia elementów multimedialnych w ramach kontenera OpenSocial s u y metoda
opensocial.newMediaItem(...), która otrzymuje na wej ciu typ MIME definiuj cy rodzaj dodawa-
nej tre ci oraz adres URL samej tre ci, na przyk ad obrazu:
// tworzy nowy element multimedialny dla obrazu
var imageUrl = "http://www.mysite.com/image.jpg";
var mediaImg = opensocial.newMediaItem("image/jpeg", imageUrl);
var mediaObj = [mediaImg];
// buduje list parametrów dla nowego powiadomienia
var params = {};
params[opensocial.Activity.Field.TITLE] = "Wys anie obrazu";
params[opensocial.Activity.Field.URL] = "http://www.myserver.com/index.php";
params[opensocial.Activity.Field.BODY] = "Test: 1, 2, 3";
params[opensocial.Activity.Field.MEDIA_ITEMS] = mediaObj;
var activityObj = opensocial.newActivity(params);
204 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
// generuje danie utworzenia nowego powiadomienia
osapi.activities.create({
userId: "@viewer",
activity: activityObj
}).execute();
Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
Proces do czania obiektu reprezentuj cego tre multimedialn w powy szym przyk adzie
sk ada si z trzech kroków. W pierwszym kroku nale y utworzy nowy obiekt elementu
multimedialnego za pomoc metody opensocial.newMediaItem(...), która tworzy odpowiedni
struktur . Pierwszy parametr tej metody, w tym przypadku image/jpeg, reprezentuje typ MIME,
czyli rodzaj tworzonych danych. Drugi parametr zawiera a cuch adresu URL wskazuj cego
odpowiedni obraz. W powy szym przyk adzie zastosowano typowe rozwi zanie dla do cza-
nia tre ci multimedialnych do powiadomienia, czyli utworzono tablic obejmuj c poszczególne
pola nowego obiektu.
W drugim kroku nale y utworzy obiekt activity obejmuj cy wszystkie dane sk adowe, w tym
obiekt tre ci multimedialnych. Parametry sk adaj ce si na ten obiekt mo na zdefiniowa
w formie obiektu JSON lub za pomoc metody opensocial.newActivity(...), która generuje
odpowiedni struktur . W roli podstawowych danych tekstowych obiektu powiadomienia
u yto tytu u, cia a i adresu URL. W powy szym kodzie dodano te element multimedialny
za po rednictwem pola opensocial.Activity.Field.MEDIA_ITEMS, któremu przypisano tablic zawie-
raj c obiekt multimedialny utworzony w poprzednim kroku. Prezentowany kod wywo uje
nast pnie metod opensocial.newActivity(...), aby wygenerowa struktur nowego powia-
domienia.
W ostatnim kroku nale y przygotowa danie utworzenia powiadomienia. Na wej ciu metody
create przekazano identyfikator u ytkownika, do którego ma trafi powiadomienie (w tym
przypadku b dzie to bie cy u ytkownik aplikacji), oraz utworzony wcze niej obiekt samego
powiadomienia.
Wymienione kroki wystarcz do wys ania powiadomienia (aktualizacji) obejmuj cego obraz.
Wstawienie zapisu wideo lub strumienia audio wymaga przeprowadzenia identycznej pro-
cedury  nale y tylko pami ta o ustawieniu w a ciwego adresu URL i typu MIME dla pre-
zentowanych danych.
Pasywne i bezpo rednie
publikowanie powiadomie aplikacji
Istniej dwie g ówne kategorie metod promowania aplikacji spo eczno ciowych: bezpo red-
nie i pasywne publikowanie powiadomie . Wybór w a ciwego rozwi zania zale y od okolicz-
no ci, w jakich aktualizacja b dzie publikowana w imieniu u ytkownika, oraz od tego, czy
u ytkownik ma wiadomo generowania tej aktualizacji.
Istnieje kilka alternatywnych modeli publikowania powiadomie aplikacji. Jak ju wspomnia-
em, wielu programistów promuje swoje aplikacje, umieszczaj c powiadomienia w strumieniach
Pasywne i bezpo rednie publikowanie powiadomie aplikacji 205
Poleć książkę
Kup książkę
aktywno ci u ytkownika, tak aby odpowiednie komunikaty by y prezentowane wszystkim
znajomym tego u ytkownika. Programi ci stosuj cy t metod s przekonani, e wi cej powia-
domie oznacza wi ksz widoczno oferty. Przyjmijmy, e u ytkownik ma zainstalowanych
co najmniej pi aplikacji, a ka da z nich wysy a maksymaln mo liw liczb powiadomie ,
które w dodatku s rozsy ane do wszystkich znajomych tego u ytkownika. Co b dzie, je li
kontener oferuje mechanizm ukrywania wszystkich tego rodzaju powiadomie , aby zapobiec
zasypywaniu swojego strumienia aktywno ci natr tnymi ofertami? Okazuje si , e niemal
wszystkie kontenery obs uguj ce aplikacje spo eczno ciowe umo liwiaj ukrywanie tego rodzaju
powiadomie , zatem programi ci musz bardzo ostro nie planowa dobór wiadomo ci i cz -
stotliwo ich wysy ania. W takim przypadku nale y rozwa y wybór bezpo redniego lub
pasywnego publikowania powiadomie . Obie opcje maj swoje zalety i wady, które zostan
szczegó owo omówione w poni szych punktach.
Bezpo rednie publikowanie powiadomie aplikacji
Bezpo rednie publikowanie powiadomie aplikacji polega na umieszczaniu w strumieniu
aktywno ci komunikatów (aktualizacji) zale nie od czynno ci podejmowanych przez u ytkow-
nika, za jego wiedz i zgod . U ytkownik godzi si na ten model, akceptuj c odpowiedni
opcj , korzystaj c z funkcji oferowanych przez t aplikacj lub wybieraj c jak form nagrody
lub wsparcia w ramach tej aplikacji.
Podstawowym argumentem na rzecz mechanizmu bezpo redniego publikowania powiado-
mie jest to, e u ytkownik wie o dzia aniach podejmowanych przez aplikacj w jego imie-
niu i  tym samym  mniejsze jest prawdopodobie stwo wy czenia (ukrycia) powiado-
mie wysy anych przez aplikacj (w konfiguracji kontenera lub samej aplikacji) lub wr cz
odinstalowania aplikacji z powodu utraty zaufania do jej dzia a . Utrzymanie relacji zaufania
pomi dzy u ytkownikiem a aplikacj jest bardzo wa ne, je li wokó tej aplikacji ma by budo-
wana szersza spo eczno . Programista powinien robi wszystko, aby u ytkownik by prze-
konany o mo liwo ci korzystania z aplikacji bez obaw o z o liwe czy ryzykowne dzia ania.
Najwi ksz wad bezpo redniego publikowania powiadomie aplikacji jest ograniczona liczba
generowanych aktualizacji. Je li aplikacja nie do skutecznie zach ca u ytkownika do dzia-
a , które powoduj wysy anie powiadomie , wi kszo u ytkowników nie b dzie godzi a
si na umieszczanie nowych elementów w swoich strumieniach aktywno ci, zatem przekaz
promuj cy aplikacj nie b dzie trafia do ich znajomych. U ytkowników kontenera aplikacji
spo eczno ciowych bardzo szybko zniech ca nadmiar powiadomie wysy anych do znajo-
mych przez zainstalowan aplikacj . Poniewa wi kszo kontenerów udost pnia funkcje
blokowania umieszczania takich powiadomie w strumieniu u ytkownika, programista, który
w ten sposób chce promowa swoj aplikacj , musi stale mie na uwadze ryzyko przekrocze-
nia akceptowanej liczby aktualizacji.
Aby ograniczy to ryzyko, nale y dobrze zaplanowa , jakie zdarzenia w ramach aplikacji b d
stanowi y dobr okazj do jej promowania (zarówno z perspektywy u ytkownika, którego
strumie aktywno ci zostanie u yty, jak i z punktu widzenia znajomych tego u ytkownika,
którzy otrzymaj odpowiednie powiadomienia). Umieszczanie w strumieniu aktywno ci u yt-
kownika zbyt du ej liczby aktualizacji jest najkrótsz drog do ca kowitego zablokowania
powiadomie generowanych przez t aplikacj . Powiadomienia nale y umieszcza w stru-
mieniu aktywno ci z umiarem.
206 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
Bezpo rednie publikowanie powiadomie aplikacji polega na prezentowaniu zach t do dzia a-
nia, które przekonaj u ytkownika do opublikowania aktualizacji aplikacji w jego strumieniu
aktywno ci:


Przeka znajomym, e zaktualizowa e swój profil i zarobi e 5 dolarów w walucie aplikacji!




Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
Po roz o eniu tego przyk adu na elementy sk adowe atwo zauwa y , e u ytkownik otrzy-
ma komunikat tekstowy i przycisk z zach t do opublikowania informacji o aktualizacji
swojego profilu. Klikni cie przycisku Publikuj powoduje, e odpowiednie powiadomienie jest
umieszczane w jego strumieniu aktywno ci, a sam u ytkownik otrzymuje potwierdzenie tej
aktualizacji.
Pasywne publikowanie powiadomie aplikacji
W przeciwie stwie do bezpo redniego publikowania powiadomie pasywne publikowanie
aktualizacji polega na umieszczaniu komunikatów w strumieniu aktywno ci u ytkownika
(i w jego imieniu) bez ka dorazowego informowania i pytania o zgod tego u ytkownika. Model
pasywnego publikowania powiadomie mo na obserwowa w takich aplikacjach jak Four-
Square czy Gowalla, które rozsy aj informacje o miejscu pobytu u ytkownika za ka dym razem,
gdy u ytkownik loguje si w tych serwisach. U ytkownik co prawda ma wiadomo , e
aplikacja umieszcza w strumieniu aktywno ci odpowiednie powiadomienia w jego imieniu
(wcze niej wyrazi na to zgod ), ale sam w aden sposób nie uczestniczy w procesie publiko-
wania poszczególnych aktualizacji.
Ta metoda publikacji powiadomie ma swoje zalety i wady. U ytkownik formalnie zezwoli
aplikacji na publikowanie powiadomie w swoim imieniu, jednak programista aplikacji ma
woln r k w kwestii wykorzystania tej zgody. Najwi ksz zalet tego modelu jest pewno ,
e okre lone czynno ci u ytkownika spowoduj opublikowanie w a ciwych powiadomie
Pasywne i bezpo rednie publikowanie powiadomie aplikacji 207
Poleć książkę
Kup książkę
(w przeciwie stwie do modelu bezpo redniej publikacji, gdzie jest wymagana ka dorazowa
zgoda u ytkownika). Oznacza to, e aplikacja dzia aj ca wed ug tego modelu mo e publiko-
wa znacznie wi cej aktualizacji w nadziei na dotarcie do wi kszej liczby odbiorców.
Najwi ksza zaleta tego modelu jest jednocze nie jego zasadnicz wad  ród em problemów
jest liczba powiadomie wysy anych w imieniu u ytkownika bez jego ka dorazowej zgody i bez
jego udzia u w tym procesie. Takie dzia anie ma kilka negatywnych aspektów:
U ytkownik musi z wyprzedzeniem wyrazi swoje zaufanie do aplikacji, aby umo liwi
jej dost p do swojego profilu spo eczno ciowego i podejmowanie dzia a w jego imieniu.
Naruszenie tej relacji zaufania poprzez wysy anie zbyt wielu aktualizacji mo e spowodo-
wa ukrycie wszystkich powiadomie , wycofanie zgody na publikacj aktualizacji w imie-
niu u ytkownika lub wr cz ca kowite odinstalowanie aplikacji.
Istnieje wiele aplikacji publikuj cych liczne aktualizacje w strumieniach aktywno ci swo-
ich u ytkowników. Wszystkie te aktualizacje s widoczne dla znajomych tych u ytkow-
ników. Je li aplikacja umieszcza w strumieniu aktywno ci u ytkownika zbyt wiele aktu-
alizacji, jego znajomi najprawdopodobniej ukryj powiadomienia generowane przez t
aplikacj lub wr cz j odinstaluj . Oznacza to, e zbyt du a liczba aktualizacji wi e si
z ryzykiem utraty potencjalnej bazy u ytkowników.
Warunkiem skutecznego publikowania powiadomie (niezale nie od wybranego modelu)
jest umiar. Nie nale y nadu ywa zaufania u ytkownika i wysy a zbyt wielu aktualizacji 
w przeciwnym razie u ytkownik bezpowrotnie straci zaufanie do aplikacji.
Zdarzeniem wywo uj cym pasywn publikacj powiadomienia mo e by prosta aktualizacja
profilu u ytkownika, która powoduje umieszczenie odpowiedniego komunikatu w strumieniu
aktywno ci:

Zaktualizuj swój profil


Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
Powy szy przyk ad pod wieloma wzgl dami przypomina kod pokazany przy okazji oma-
wiania bezpo redniego publikowania powiadomie . Jedyna ró nica polega na tym, e doda-
208 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
nie nowego powiadomienia jest teraz ci le zwi zane z aktualizacj profilu, a u ytkownik nie
jest informowany o umieszczeniu nowego powiadomienia w strumieniu aktywno ci (nie jest
te pytany o zgod ).
Przyk adowa aplikacja udost pnia wiele pól formularza, za po rednictwem którego u yt-
kownik mo e zaktualizowa swój profil. Po wprowadzeniu zmian u ytkownik mo e klikn
przycisk zapisuj cy nowe ustawienia. Klikni cie tego przycisku powoduje wywo anie funkcji,
która wysy a na serwer danie aktualizacji profilu. Po wys aniu tego dania odpowiednie
powiadomienie jest umieszczane w strumieniu aktywno ci u ytkownika (w jego imieniu) bez
adnej informacji czy ostrze enia dla samego u ytkownika.
Zrównowa one publikowanie powiadomie
Jednym ze sposobów wykorzystania zalet obu modeli (bezpo redniego i pasywnego publi-
kowania powiadomie ) i jednocze nie unikania ich wad jest próba zintegrowania obu roz-
wi za w ramach mechanizmu zrównowa onego publikowania powiadomie . Proponowana
technika, je li jest prawid owo stosowana, pozwala zagwarantowa publikacj okre lonej liczby
powiadomie w zwi zku z dzia aniami u ytkownika, przy jednoczesnym zachowaniu relacji
zaufania cz cej aplikacj i tego u ytkownika.
Technika zrównowa onego publikowania powiadomie bazuje na kilku podstawowych za o-
eniach. Programista powinien zacz od stosowania modelu pasywnego publikowania powia-
domie i na podstawie zebranych do wiadcze okre li , które czynno ci u ytkownika powinny
powodowa publikowanie aktualizacji. Je li powiadomienia publikowane w tym trybie s
skojarzone z cz stymi czynno ciami, aplikacja zasypie strumie aktywno ci u ytkownika (bez
jego wiedzy) mnóstwem komunikatów. Pasywne publikowanie powiadomie nale y stosowa
tylko dla najwa niejszych dzia a , jak wykonanie przez u ytkownika czasoch onnego zada-
nia, uzyskanie rzadkiej odznaki czy wprowadzenie istotnych zmian w jego profilu lub tre ci
aplikacji. Takie rozwi zanie pozwala jednocze nie zagwarantowa promocj pewnej liczby
zdarze i wyeliminowa ryzyko zmonopolizowania strumienia aktywno ci u ytkownika.
Dla wszystkich pozosta ych zdarze , które powinny powodowa umieszczanie komunika-
tów w strumieniu aktywno ci, nale y stosowa technik bezpo redniej publikacji powiado-
mie . Powiadomienia publikowane w tym trybie mog dotyczy zaprosze , pró b o pomoc
lub okre lon tre kierowanych do znajomych, udost pniania znajomym tre ci aplikacji itp.
Zach ty do dzia ania mog by bardziej kusz ce, je li zawieraj informacje o korzy ciach
wynikaj cych ze zgody na publikacj aktualizacji  mo e to by zastrzyk wirtualnej gotówki
lub dost p do rozmaitych ulepsze .
Rozs dne gospodarowanie aktualizacjami i utrzymanie relacji zaufania cz cej aplikacj
z u ytkownikiem mo e bardzo u atwi budowanie bogatej bazy promocji aplikacji przy u yciu
strumienia aktywno ci. W idealnych warunkach to u ytkownicy b d promowali aplikacj
w ród swoich znajomych, publikuj c powiadomienia dotycz ce wykonywanych przez siebie
czynno ci.
Pasywne i bezpo rednie publikowanie powiadomie aplikacji 209
Poleć książkę
Kup książkę
Generowanie da AJAX i da dost pu
do danych zewn trznych
W trakcie normalnego funkcjonowania programu programista cz sto staje przed konieczno ci
modyfikacji kodu aplikacji lub rozszerzenia róde danych serwera (na przyk ad bazy danych)
o now tre . Aby upro ci to zadanie, specyfikacja OpenSocial definiuje metody obiektu http
dost pne za po rednictwem standardowej biblioteki JavaScriptu.
Programi ci mog u ywa tej metody do generowania da REST (GET, PUT, POST i DELETE)
pomi dzy aplikacj a serwerem w celu zmodyfikowania stanu dzia aj cego systemu bez wp ywu
na doznania u ytkowników.
Do generowania tych da s u nast puj ce metody obiektu osapi.http:
osapi.http.get(url, parametry)
osapi.http.put(url, parametry)
osapi.http.post(url, parametry)
osapi.http.delete(url, parametry)
Oprócz adresu URL, na który ma zosta wys ane danie http, na wej ciu wymienionych metod
mo na dodatkowo przekazywa wiele ró nych parametrów. Dost pne parametry opisano
w tabeli 6.2.
Tabela 6.2. Parametry da obiektu http
Parametr Opis
authz ( a cuch)
Metoda autoryzacji u ywana podczas wysy ania danych na serwer. Parametr
mo e mie warto none (domy lnie), signed lub oauth.
body ( a cuch)
Stosowane tylko dla da PUT i POST. Dane wysy ane na serwer w ramach dania.
format ( a cuch)
Format zwracanych danych. Parametr mo e mie warto json (domy lnie)
lub text.
headers ( a cuch lub tablica a cuchów)
Opcjonalne nag ówki wysy ane wraz z daniem danych.
oauth_service_name ( a cuch)
Element service w specyfikacji gad etu, który ma zosta u yty w tym daniu.
Domy ln warto ci tego parametru jest a cuch pusty ("").
oauth_token_name ( a cuch)
Token standardu OAuth stosowany w tym daniu. Domy ln warto ci tego
parametru jest a cuch pusty ("").
oauth_request_token ( a cuch)
Token wst pnie zaakceptowany przez dostawc (dla tre ci b d cej przedmiotem
dania).
oauth_request_token_secret ( a cuch)
Tajny klucz skojarzony z tokenem request_token.
oauth_use_token ( a cuch)
Okre la, czy w daniu nale y u y tokenu standardu OAuth. Parametr mo e
mie warto always, if_available lub never.
refreshInterval (liczba ca kowita)
Okres, w którym kontener mo e przechowywa zwrócone dane w swojej pami ci
podr cznej.
sign_owner (warto logiczna)
Okre la, czy danie powinno by autoryzowane (podpisane) i czy ma obejmowa
identyfikator w a ciciela. Parametr domy lnie ma warto true.
sign_viewer (warto logiczna)
Okre la, czy danie powinno by autoryzowane (podpisane) i czy ma obejmowa
identyfikator bie cego u ytkownika. Parametr domy lnie ma warto true.
210 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
Znaczna cz da dotycz cych danych, które nie wymagaj zabezpiecze , obejmuje zale-
dwie kilka z opisanych parametrów, w tym format, body (w przypadku da POST i PUT) oraz
refreshInterval (w celu poprawienia wydajno ci).
Parametry authz, sign_* oraz oauth_* stosuje si w sytuacji, gdy danie danych wymaga zabez-
pieczenia i gdy odbiorca musi potwierdzi to samo nadawcy tego dania.
Generowanie standardowych da dost pu do danych
Je li budowany serwis wymaga bezpiecznego przesy ania danych, dost p do zdecydowanej
wi kszo ci tych danych b dzie si odbywa za po rednictwem standardowych da serwera
RESTful. Do generowania tych standardowych da s u y wywo anie osapi.http.metoda, gdzie
s owo metoda nale y zast pi typem dania, czyli get, put, post lub delete.
Poniewa omawiane rozwi zania wymagaj stosowania funkcji biblioteki osapi j zyka Java-
Script, nale y doda wyra enie Require, aby by o mo liwe korzystanie z metod generowania
da . Po udost pnieniu wspomnianych metod mo na przyst pi do utworzenia praktycz-
nego przyk adu, który b dzie pobiera dane z zewn trznego ród a i wy wietla uzyskan
w ten sposób tre w oknie aplikacji.
Poni szy przyk ad kodu generuje danie GET wysy ane do serwisu Flickr przy u yciu j zyka
YQL (od ang. Yahoo! Query Language). danie zwraca fotografie pasuj ce do wyszukiwanego
s owa Montreal. Otrzymane wyniki s nast pnie przetwarzane  ka de zdj cie jest otaczane
znacznikami i wy wietlane w ramach okna aplikacji:








]]>


Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
W pierwszym kroku zdefiniowano specyfikacj gad etu niezb dn do uruchomienia tego
przyk adu, w szczególno ci element Require dla biblioteki osapi (w ramach elementu ModulePrefs).
W kolejnym kroku utworzono sekcj Content wy wietlaj c widok kanwy aplikacji.
W a ciwe wykonywanie programu rozpoczyna si w dolnej cz ci sekcji Content. Zdefinio-
wano tam adres URL, na który zostanie wys ane danie (w tym przypadku u yto adresu
us ugi YQL z a cuchem wyszukiwania dla serwisu Flickr). Bezpo rednio potem wywo ano
metod our osapi.http.get(...), aby zainicjowa to danie. Na wej ciu tej metody przekazano
wspomniany adres URL (za po rednictwem parametru href) i okre lono, e oczekiwanym wyni-
kiem tego dania jest obiekt JSON. Ostatnim elementem tej cz ci kodu jest wys anie dania
za pomoc metody execute(...). Na wej ciu tej metody przekazano referencj do funkcji wywo-
ania zwrotnego, która ma zosta wykonana po zwróceniu odpowiedzi dla dania.
Po zako czeniu przetwarzania dania nast puje wywo anie funkcji requestCallback, która
otrzymuje na wej ciu (za po rednictwem parametru) obiekt odpowiedzi. Dalsza cz kodu
odpowiada za przetworzenie otrzymanych warto ci  u yta p tla for przeszukuje poszcze-
gólne obiekty na li cie.
Dla ka dej fotografii znalezionej na li cie jest generowany fragment kodu j zyka HTML ze
znacznikami i odwo aniem do odpowiedniego adresu URL w ramach serwisu Flickr. Po
wygenerowaniu tre ci w formacie HTML dla wszystkich obrazów gotowy a cuch jest umiesz-
czany w w le div skonfigurowanym na pocz tku sekcji Content.
Umieszczanie tre ci w daniach danych
W niektórych przypadkach wraz z daniem nale y wys a na serwer okre lon tre . danie
mo e dotyczy na przyk ad umieszczenia na serwerze nowych ustawie konfiguracyjnych
u ytkownika, czyli aktualizacji rekordu tego u ytkownika w bazie danych:








Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
W ramach dania POST umieszczono kod j zyka znaczników, aby umo liwi u ytkowni-
kowi podanie nazwy i has a. Obie warto ci reprezentuj informacje, które zostan przekazane
na serwer w celu zaktualizowania rekordu u ytkownika. W powy szym kodzie zdefiniowano
te w ze div, w którym b dzie wy wietlane potwierdzenie wys ania dania. Klikni cie przy-
cisku przez u ytkownika spowoduje wywo anie funkcji updateRecord().
W ciele funkcji updateRecord() ustawiono adres URL, na który zostanie wys ane danie, oraz
wygenerowano pary klucz-warto dania POST na podstawie pól z danymi wej ciowymi.
Kolejne pary oddzielono znakiem &.
I wreszcie przedstawiony kod generuje danie POST protoko u HTTP za pomoc metody osapi.
http.post(...) otrzymuj cej na wej ciu adres URL, format i dane, które maj zosta wys ane
w ramach tego dania. Metoda execute() generuje danie i wywo uje funkcj zwrotn po
jego przetworzeniu. Funkcja zwrotna umieszcza w w le div prosty komunikat o pomy lnym
przebiegu operacji.
U ywanie autoryzowanych da do zabezpieczania po cze
W przypadku standardowych da protoko u HTTP wysy anych za po rednictwem aplika-
cji korzystaj cej z metod obiektu osapi.http to kontener pe ni funkcj po rednika i przekazuje
bezpo rednio na serwer wszystkie parametry do czone do dania. W tym modelu kontener
w aden sposób nie modyfikuje przekazywanych parametrów (patrz rysunek 6.2).
Rysunek 6.2. U ytkownik generuj cy danie do zewn trznego serwisu internetowego za po rednictwem
kontenera bez autoryzacji OAuth
Generowanie da AJAX i da dost pu do danych zewn trznych 213
Poleć książkę
Kup książkę
W przypadku pobierania danych z zewn trznego ród a, które nie wymaga stosowania zabez-
piecze ani weryfikacji to samo ci u ytkownika, opisany powy ej model (z niezabezpieczonym
transferem danych) w zupe no ci wystarczy.
Warto jednak przeanalizowa nieco inny scenariusz generowania dania. Przypu my, e
zamiast pobiera przypadkowe, niewra liwe dane, generujemy danie POST, aby zaktualizo-
wa na serwerze dane u ytkownika. Wszystkie parametry przekazywane na serwer, w tym
identyfikator u ytkownika, s ustawiane w kodzie samej aplikacji. Poniewa danie nie jest
w aden sposób zabezpieczone, ka dy u ytkownik mo e odczyta te dane za pomoc Firebuga
lub tak zmodyfikowa danie, aby zmieni lub uzyska informacje o innym u ytkowniku.
Na rysunku 6.3 pokazano danie wys ane na serwer, które sprawia wra enie w pe ni popraw-
nego, mimo e w rzeczywisto ci przekazuje kontrol nad danymi u ytkownika innemu, nie-
uprawnionemu u ytkownikowi.
Rysunek 6.3. Z o liwy u ytkownik generuje danie do zewn trznego serwisu, skutecznie podszywaj c si
pod innego u ytkownika (wskutek braku autoryzacji OAuth)
W a nie takim przypadkom mo na zapobiec, stosuj c autoryzowane dania, które mo na
generowa za pomoc metod obiektu osapi.http standardu OpenSocial. Autoryzowane (pod-
pisane) dania umo liwiaj programistom przekazywanie parametrów pomi dzy aplikacj
a serwerem, jednak w tym przypadku kontener aplikacji jest nieporównanie bardziej aktywny.
Kontener, do którego trafia autoryzowane danie (patrz rysunek 6.4), sprawdza to samo
u ytkownika wyst puj cego w roli nadawcy i do cza do dania odpowiedni identyfikator.
Oprócz tego identyfikatora kontener dodaje do dania zaszyfrowany skrót, który umo liwia
weryfikacj poprawno ci identyfikatora przez niezale n , zewn trzn us ug .
Rysunek 6.4. U ytkownik generuj cy danie do zewn trznego serwisu internetowego za po rednictwem
kontenera z wykorzystaniem autoryzacji OAuth
214 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
Dodatkowa weryfikacja oznacza, e atak polegaj cy na próbie sfa szowania to samo ci u yt-
kownika i wys ania na serwer danych uwierzytelniaj cych innego u ytkownika zako czy si
niepowodzeniem, poniewa sfa szowane dane i tak zostan nadpisane przez dane uwierzy-
telniaj ce w a ciwego u ytkownika. Je li dane u ytkownika zostan potwierdzone, w ramach
dania mo na dodatkowo przekaza takie parametry jak identyfikator bie cego u ytkow-
nika i w a ciciela czy identyfikator aplikacji (patrz rysunek 6.5).
Rysunek 6.5. Z o liwy u ytkownik generuje danie do zewn trznego serwisu, ale nie mo e skutecznie
podszywa si pod innego u ytkownika z powodu zastosowania mechanizmu autoryzacji OAuth
W przypadku wygenerowania autoryzowanego (podpisanego) dania serwer docelowy
zawsze otrzymuje nast puj ce parametry:
opensocial_owner_id
Unikatowy identyfikator w a ciciela aplikacji.
opensocial_app_url
Pe ny adres URL aplikacji, która wygenerowa a dane danie.
Poza wymienionymi powy ej wymaganymi parametrami kontenery mog te wysy a dodat-
kowe informacje u atwiaj ce weryfikacj , w tym:
opensocial_viewer_id
Unikatowy identyfikator bie cego u ytkownika aplikacji.
opensocial_instance_id
Okre la, czy kontener powinien obs ugiwa wiele instancji tej samej aplikacji. Za po red-
nictwem tego parametru nale y przekaza identyfikator instancji aplikacji wysy aj cej dane
danie. Pomi dzy parametrami opensocial_instance_id i opensocial_app_url mo na wskaza
instancj konkretnej aplikacji dzia aj cej w kontenerze.
opensocial_app_id
Unikatowy identyfikator aplikacji. Ten parametr s u y przede wszystkim zachowaniu
zgodno ci wstecz z wersj 0.7 specyfikacji OpenSocial.
xoauth_public_key
Klucz publiczny u yty do podpisania danego dania. Je li kontener nie stosuje kluczy
publicznych do podpisywania da lub je eli wykorzystuje alternatywne metody prze-
kazywania kluczy w ramach da , ten parametr mo na pomin .
Generowanie da AJAX i da dost pu do danych zewn trznych 215
Poleć książkę
Kup książkę
Oprócz wymienionych powy ej parametrów na serwer mo na dodatkowo wysy a dane
uwierzytelniaj ce standardu OAuth umo liwiaj ce weryfikacj autoryzowanych da . Do tej
grupy parametrów nale :
oauth_consumer_key
oauth_nonce
oauth_signature
oauth_signature_method
oauth_timestamp
oauth_token
Samo wygenerowanie podpisanego (autoryzowanego) dania nie gwarantuje pe nej ochrony
przed manipulacjami. Serwer docelowy dania musi jeszcze wykona dodatkowe kroki zwi -
zane z weryfikacj autoryzowanego dania, aby potwierdzi poprawno nades anych danych.
Generowanie autoryzowanego dania
Utworzenie podpisanego (autoryzowanego) dania wymaga po czenia standardowej sk adni
da , któr stosowano ju we wcze niejszych przyk adach, z parametrem authz:
// generuje podpisane danie GET protoko u HTTP
osapi.http.get({
'href' : 'http://www.mysite.com/editUser.php',
'format' : 'json',
'authz' : 'signed'
}).execute(callback);
W ramach tego dania GET zdefiniowano adres URL, na który ma zosta wys ane podpisane
danie, wskazano format danych i  co najwa niejsze  okre lono, e danie ma by pod-
pisane (parametr authz). Powy szy kod generuje wi c podpisane danie GET protoko u HTTP.
Weryfikacja podpisanego dania po stronie serwera
Jak ju wspomnia em, samo wygenerowanie i wys anie podpisanego dania na serwer nie wy-
starczy do zagwarantowania poprawno ci tego dania. Z o liwy u ytkownik mo e podj prób
fa szowania tak e autoryzowanych da . Do weryfikacji podpisanych da pod k tem pocho-
dzenia z w a ciwego ród a programista mo e wykorzysta podpis standardu OAuth.
Weryfikacja da przy u yciu tego mechanizmu b dzie wymaga a kilku dodatkowych
elementów:
Biblioteki OAuth (dost pnej na stronie http://code.google.com/p/oauth/) niezb dnej do wery-
fikacji da po stronie serwera. W tym przyk adzie b dzie stosowana biblioteka PHP
OAuth 1.0 Rev A (dost pna pod adresem http://oauth.googlecode.com/svn/code/php/).
Je li kontener stosuje metod weryfikacji na bazie certyfikatu klucza publicznego, b dzie
potrzebny odpowiedni certyfikat. List certyfikatów z kluczami publicznymi dla wielu
ró nych kontenerów oraz adresy us ug sprawdzania tych certyfikatów mo na znale na
stronie https://opensocialresources.appspot.com/certificates/. Wspomniany serwis nale y jednak
traktowa wy cznie jako pomocnicze ród o, poniewa jego tre nie jest aktualizowana
ani aprobowana przez twórców kontenerów. Aby zintegrowa najlepsze mechanizmy
zabezpiecze , nale y zapozna si z dokumentacj kontenera i znale najbardziej aktu-
alny certyfikat klucza publicznego.
216 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
Weryfikacja podpisanego dania sk ada si z dwóch kroków. Po pierwsze, w kodzie po
stronie klienta nale y odpowiednio przygotowa podpisane danie na potrzeby skryptu po
stronie serwera. Nast pnie trzeba przetworzy parametry przes ane do skryptu po stronie
serwera i sprawdzi ich poprawno za pomoc elementów biblioteki OAuth. Ca y ten dwu-
etapowy proces zosta omówiony poni ej.
Generowanie podpisanego dania w kodzie JavaScriptu
Wygenerowanie podpisanego dania w warstwie kodu j zyka JavaScript (w ramach sekcji
Content specyfikacji gad etu) spowoduje przekazanie danych uwierzytelniaj cych biblioteki
OAuth, kontenera i u ytkownika w celu sprawdzenia poprawno ci dania po stronie serwera.
Wygenerowanie takiego dania sprowadza si do utworzenia podpisanego dania osapi.
http.get adresowanego do skryptu po stronie serwera (podobnie jak w podpunkcie  Gene-
rowanie autoryzowanego dania we wcze niejszej cz ci tego podrozdzia u):









]]>


Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
Sam gad et zawiera wyra enia Require dla dania osapi.http.get(...) i sekcj Content nie-
zb dn do wykonywania tych skryptów. We wspomnianej sekcji Content umieszczono w ze div,
w którym b dzie wy wietlany komunikat o wyniku weryfikacji (komunikat b dzie generowany
przez funkcj wywo ania zwrotnego oraz przez wywo anie zwrotne samego dania proto-
ko u HTTP). W aplikacji produkcyjnej nale a oby sprawdza komunikat i odpowiednio obs u-
giwa komunikat odes any przez serwer w kodzie skryptu. Je li odpowied serwera jest pra-
wid owa i obejmuje nowy kod j zyka znaczników, mo na wstawi ten kod na stronie. Je eli
jednak odpowied jest nieprawid owa, nale y wy wietli stosowny komunikat o braku mo -
liwo ci realizacji dania (przynajmniej w danej chwili).
Generowanie da AJAX i da dost pu do danych zewn trznych 217
Poleć książkę
Kup książkę
Wywo anie metody osapi.http.get(...), które ma miejsce po wspomnianym wywo aniu zwrot-
nym, generuje podpisane danie GET do skryptu po stronie serwera.
Weryfikacja podpisanego dania po stronie serwera
(algorytm RSA-SHA1 z certyfikatem klucza publicznego)
danie przekazywane (za po rednictwem odpowiedniej warstwy kontenera) do skryptu po
stronie serwera  w tym przypadku funkcj skryptu pe ni plik http://www.mysite.com/validate.
php  powinno obejmowa wszystkie parametry niezb dne do weryfikacji, czyli dane uwie-
rzytelniaj ce kontenera, u ytkownika i biblioteki OAuth.
Wiele popularnych kontenerów aplikacji spo eczno ciowych stosuje certyfikaty z kluczami
publicznymi do weryfikacji da przy u yciu algorytmu RSA-SHA1. W poni szym przyk a-
dzie danie zostanie sprawdzone z wykorzystaniem jednego z takich certyfikatów.
Je li kontener nie stosuje certyfikatów z kluczami publicznymi do weryfikacji da
lub je eli programista woli u y algorytmu HMAC-SHA1 zamiast RSA-SHA1, nale y
wygenerowa klucz tajny na poziomie kontenera i wykorzysta ten klucz w miejsce
certyfikatu klucza publicznego.
require_once("OAuth.php");
class buildSignatureMethod extends OAuthSignatureMethod_RSA_SHA1 {
public function fetch_public_cert(&$request) {
return file_get_contents("http://www.fmodules.com/public080813.crt");
}
}
// konstruuje danie na podstawie parametrów POST i GET
$request = OAuthRequest::from_request(null, null, array_merge($_GET, $_POST));
// tworzy now metod podpisu na podstawie utworzonej klasy i certyfikatu klucza publicznego
$signature_method = new buildSignatureMethod();
// sprawdza podpis
@$signature_valid = $signature_method->check_signature($request, null, null, $_GET
["oauth_signature"]);
$response = array();
if ($signature_valid) {
// sprawdza podpisane danie i wysy a komunikat o pomy lnej weryfikacji
$response['validation'] = "valid";
} else {
// sprawdza podpisane danie i wysy a komunikat o niepowodzeniu weryfikacji
$response['validation'] = "invalid";
}
// wy wietla obiekt odpowiedzi
print(json_encode($response));
?>
Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
218 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
Wyra enie require_once(...) na pocz tku tego przyk adu wskazuje plik biblioteki OAuth,
który pobrano wcze niej ze strony http://oauth.googlecode.com/svn/code/php/.
Warto na pocz tku zwróci uwag na skrypt weryfikacji w postaci klasy buildSignatureMethod.
Wspomniana klasa rozszerza klas OAuthSignatureMethod_RSA_SHA1 zdefiniowan w pliku OAuth.php
i zawiera zaledwie jedn funkcj odpowiedzialn za pobranie i zwrócenie zawarto ci pliku
certyfikatu klucza publicznego. Danych zawartych w tym pliku nie nale y pobiera za ka -
dym razem, gdy jakie podpisane danie wymaga weryfikacji. Nale y raczej doda te dane
do pami ci podr cznej kluczy indeksowanej wed ug wielu parametrów przekazywanych do
skryptu po stronie serwera. Zawarto tej pami ci powinna by aktualizowana tylko w przy-
padku zmiany wspomnianych warto ci. Przekazywane parametry obejmuj :
xoauth_signature_publickey
oauth_consumer_key
oauth_signature_method
W kolejnym kroku skonstruowano nowy obiekt dania OAuth na podstawie parametrów
GET i POST przes anych w ramach dania protoko u HTTP. Przekazane warto ci obejmuj para-
metry standardu OAuth i kontenera do czone do dania przez skrypt po rednicz cy, który
wygenerowa to danie na poziomie kontenera. Obiekt dania OAuth zostanie u yty do
weryfikacji przekazanego podpisu. Za pomoc klasy uzyskuj cej certyfikat klucza publicznego
mo na zbudowa nowy podpis (na podstawie tego certyfikatu).
Metoda check_signature(...) jest wywo ywana w celu sprawdzenia przekazanego podpisu
i zapisania wyniku weryfikacji. Zale nie od efektu weryfikacji skrypt zapisuje komunikat o suk-
cesie b d niepowodzeniu i odsy a do skryptu po stronie klienta obiekt odpowiedzi w for-
macie JSON.
Weryfikacja podpisanego dania po stronie serwera (algorytm HMAC-SHA1)
Je li certyfikat klucza publicznego jest niedost pny dla kontenera, w którym dzia a aplikacja,
mo na zastosowa alternatywny model weryfikacji podpisanych da po stronie serwera.
Zamiast algorytmu RSA-SHA1 nale y wówczas u y algorytmu HMAC-SHA1.
Zamiast pos ugiwa si certyfikatem klucza publicznego w roli metody weryfikacji dania,
programista mo e wygenerowa nowy obiekt dania OAuth na podstawie danych przes anych
w ramach podpisanego dania:
require_once("OAuth.php");
$key = "TUTAJ NALE Y ZDEFINIOWA KLUCZ";
$secret = "TUTAJ NALE Y ZDEFINIOWA KLUCZ";
// Konstruuje nowy obiekt dania na podstawie bie cego dania
$request = OAuthRequest::from_request(null, null, $_REQUEST);
$consumer = new OAuthConsumer($key, $secret, null);
// inicjalizuje metod podpisu
$sig_method = new OAuthSignatureMethod_HMAC_SHA1();
// sprawdza przekazany podpis OAuth
$signature = $_GET['oauth_signature'];
$valid_sig = $sig_method->check_signature(
$request,
$consumer,
Generowanie da AJAX i da dost pu do danych zewn trznych 219
Poleć książkę
Kup książkę
null,
$signature
);
// sprawdza, czy podpis zosta prawid owo zweryfikowany
if (!$valid_sig) {
// NIEPRAWID OWY PODPIS  nale y wygenerowa odpowiedni komunikat o b dzie
} else{
// PRAWID OWY PODPIS  program mo e kontynuowa dzia anie
}
?>
Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
Podobnie jak w poprzednim przyk adzie, powy szy kod zaczyna si od do czenia biblioteki
OAuth j zyka PHP (dost pnej na stronie http://oauth.googlecode.com/svn/code/php/). Dzi ki temu
mo na utworzy w asny obiekt dania OAuth i obiekt odbiorcy (tzw. konsumenta), po czym
sprawdzi przekazany podpis. Oprócz wspomnianej biblioteki w kodzie do czono odbiorc
dania OAuth (obiekt odbiorcy dania OAuth zostanie skonstruowany na podstawie zmien-
nych reprezentuj cych klucze).
W kolejnym kroku nale y skonstruowa obiekty dania OAuth i jego odbiorcy. W tym celu
wywo ujemy najpierw metod OAuthRequest::from_request(...), aby zbudowa obiekt da-
nia. Za po rednictwem pierwszych dwóch parametrów przekazano warto null, poniewa
w tym przypadku wspomniane parametry nie s wymagane. Parametry te reprezentuj odpo-
wiednio metod protoko u HTTP i adres URL. Za po rednictwem trzeciego parametru prze-
kazano obiekt $_REQUEST zawieraj cy wszystkie informacje na temat dania OAuth, które s
niezb dne do skonstruowania nowego obiektu. W kolejnym kroku utworzono nowy obiekt
OAuthConsumer, przekazuj c na wej ciu konstruktora klucz OAuth i klucz tajny. Trzecim para-
metrem tej metody jest adres URL wywo ania zwrotnego dla procesu OAuth (w tym przypadku
przekazano warto null).
Kolejnym niezb dnym krokiem jest utworzenie nowego obiektu podpisu za pomoc wywo ania
konstruktora OAuthSignatureMethod_HMAC_SHA1(). Dzi ki temu b dzie mo liwe porównywanie
podpisu reprezentowanego przez ten obiekt z podpisem przekazanym w ramach autoryzo-
wanego zdarzenia  na tej podstawie mo na stwierdzi , czy drugi podpis jest prawid owy.
Kolejny blok kodu rozpoczyna si od odczytania podpisu OAuth przekazanego w ramach
autoryzowanego dania. Po odczytaniu tego podpisu nowy obiekt jest u ywany do wywo-
ania metody check_signature(...). Na wej ciu tej metody (w roli listy parametrów) s prze-
kazywane: obiekt dania OAuth i obiekt odbiorcy OAuth, warto tokenu (w tym przypadku
jest niepotrzebna, st d u yta warto null) i wreszcie podpis przekazany w ramach dania
i b d cy przedmiotem porównania.
Po wykonaniu wszystkich tych zada mo na wreszcie u y zwróconej warto ci do spraw-
dzenia, czy weryfikacja podpisu przebieg a pomy lnie (tj. czy podpis przekazany w ramach
dania by poprawny). Je li tak, program mo e kontynuowa przetwarzanie podpisanego da-
nia. Je li nie, kod powinien wy wietli komunikat o b dzie.
220 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
Budowanie kompletnego gad etu
Kompletny kod ród owy tego przyk adu jest dost pny pod adresem ftp://ftp.helion.pl/
przyklady/prapse.zip.
Skoro dysponujemy ju wiedz niezb dn do praktycznego stosowania funkcji spo eczno-
ciowych gad etu, warto wykorzysta zdobyte umiej tno ci i opracowa prosty gad et. Gad et
opracowany w tym podrozdziale b dzie wy wietla strumie aktywno ci znajomych bie cego
u ytkownika i zdj cia przypisane do ich profili oraz udost pnia u ytkownikowi metod doda-
j c nowe powiadomienie do jego strumienia.
Nale y najpierw przygotowa kod znaczników nowego gad etu. W tym przyk adzie b dzie
potrzebna tylko lekka biblioteka osapi j zyka JavaScript, zatem nale y j doda w budowanej
specyfikacji. Programista musi te zdefiniowa widok, w którym b dzie adowany w ze Content:


description="Wy wietla uzyskane informacje spo eczno ciowe i formularz dodawania aktualizacji">





]]>


Nale y teraz umie ci w w le Content odpowiednie style i kod j zyka znaczników. Na potrzeby
tego przyk adu zostan u yte style rozmieszczaj ce elementy na stronie oraz ustawiaj ce
czcionk , kolory i odst py. Kod j zyka znaczników zbuduje kontener podzielony na dwie
kolumny. Lewa kolumna b dzie zawiera a ostatnie aktualizacje dotycz ce znajomych u ytkow-
nika; prawa kolumna b dzie wy wietla a obrazy profili dwunastu spo ród tych znajomych.
Pod zdj ciami znajduje si formularz, w którym u ytkownik mo e wpisa tytu , opis i adres URL
przeznaczone do opublikowania w strumieniu aktywno ci:



Pozosta e profile


Wy lij powiadomienie do znajomych



















Powiadomienia od Twoich znajomych




Ostatnim sk adnikiem tego gad etu jest warstwa kodu j zyka JavaScript. Sekcja skryptu obej-
muje trzy funkcje odpowiedzialne za obs ug pobierania i ustawiania danych spo eczno ciowych
gad etu. Wspomniane funkcje s stosowane w roli konstruktorów róde danych spo eczno cio-
wych i mechanizmów promocji danych aplikacji w ród znajomych bie cego u ytkownika:

Funkcja fetchProfile() uzyskuje adresy URL i zdj cia przypisane do profili znajomych bie -
cego u ytkownika. Pobrane informacje s nast pnie u ywane do utworzenia zbioru znaczników
obrazów, które s umieszczane w kodzie j zyka HTML gad etu.
Funkcja fetchUpdates() pobiera aktualizacje ze strumieni aktywno ci znajomych u ytkownika,
tworzy kod j zyka znaczników z tytu ami w formie linków, po czym wstawia gotowy kod
HTML-a do lewej kolumny aplikacji. Ostatnia funkcja, nazwana addActivity(), dodaje nowe
powiadomienie do strumienia aktywno ci u ytkownika (po wpisaniu tytu u, opisu i adresu
URL w prawej kolumnie).
Dwa ostatnie wiersze tego bloku kodu JavaScriptu wywo uj funkcje pobieraj ce dane spo-
eczno ciowe i wype niaj ce widok aplikacji (w czasie jej adowania). Podczas adowania
gad etu zostan wy wietlone wszystkie elementy spo eczno ciowe zdefiniowane w w z ach div
(patrz rysunek 6.6).
Opisana aplikacja zawiera kilka podstawowych funkcji spo eczno ciowych, które mo na
z powodzeniem wykorzystywa do promocji w asnych aplikacji i dostosowywania ich dzia a-
nia do potrzeb u ytkowników. Wystarczy zastosowa cho by cz spo ród zaproponowanych
rozwi za , aby lepiej odczytywa preferencje u ytkowników, sprowokowa ich do promo-
wania aplikacji w naszym imieniu i uwzgl dni w aplikacji wykaz znajomych u ytkownika
w ramach serwisu spo eczno ciowego.
Budowanie kompletnego gad etu 223
Poleć książkę
Kup książkę
Rysunek 6.6. Przyk adowy gad et dla rozdzia u 6. ilustruj cy sposoby operowania na strumieniu aktywno ci
i profilach spo eczno ciowych
224 Rozdzia 6. Aktywno u ytkowników, publikowanie powiadomie aplikacji i danie danych w kontenerze OpenSocial
Poleć książkę
Kup książkę
Skorowidz
, 403 kopiuj ce widoki, 43
, 232 nierentowno , 44
, 228 odbiorcy, 57
, 229 promocja, 200
, 229 przeno ne z animacjami, 41
sprzeda y produktów, 50, 51, 52
uwzgl dniaj ce po o enie u ytkownika, 53, 54,
A
55, 56
zbyt du o informacji, 43
ActivitiesRequest, znacznik, 232, 233
App Engine, 562
Activity Streams, 18, 278, 421
instalacja, 562
czasowniki, 426, 427, 428, 429
ataki
opcjonalne atrybuty obiektu, 425
cz owiek po rodku, 482
typy obiektów, 424, 426, 427
metod powtarzania, 482
ActivityRequest, znacznik, 232
odgadywanie hase na bie co, 481
Address, obiekt, 184
pobieranie plików bez wiedzy u ytkownika, 31
addTab(), 130, 131
pods uch, 482
ADsafe, 18, 31, 312, 314
podszywanie si pod mechanizm weryfikacji, 482
biblioteki, 328
przechwytywanie sesji, 482
do czanie zdarze , 327
przekierowanie u ytkowników bez ich zgody, 290
GET, 321, 322
rejestrowanie naciskanych klawiszy, 291, 293
kontra Caja, 313
ledzenie historii przegl darki, 290, 291
metody, 315
wykonanie kodu za pomoc
obiekt, 314, 315
document.createElement, 291
obiekt pakietu, 321
XSS, 30
q, metoda, 317
Attribute Exchange, 471, 473
SET, 322, 323, 324, 325
adresy, 473
wybór w z ów DOM, 317
data urodzenia, 474
AJAX, 563
komunikatory, 476
aktywno , 563
nazwisko, 476, 477
alignTabs(), 134
obrazy, 475
Apache, 558
poczta elektroniczna, 475
instalacja w systemie Mac OS X, 559
pozdrowienia audio i wideo, 474
instalacja w systemie Windows, 559, 560
pozosta e dane osobowe i preferencje
Apache Shinding, Patrz Shinding
u ytkownika, 478, 479
aplikacje
praca, 478
b dy, 40
telefon, 477
gra spo eczno ciowa ze znajomymi, 46, 47, 48,
witryny internetowe, 478
49, 50
AX, Patrz Attribute Exchange
informacyjne, 45
567
Poleć książkę
Kup książkę
OAuth 2, 381, 382, 383
B
przenoszenie aplikacji do kontenera
OpenSocial, 152
basic authentication, Patrz uwierzytelnianie
finger, polecenie, 429
podstawowe
flash, biblioteka, 118
b yskawiczny rozwój, 563
FQL, 153
BodyType, obiekt, 185
bunch object, Patrz obiekt pakietu
G
C
gad et, 563
animacja Flash, 118, 119
Caja, 18, 31, 151, 288, 289, 306
dodawanie Caja, 303
dodawanie do gad etu, 303
dynamiczne ustawianie wysoko ci widoku,
konfiguracja, 293, 294
117
kontra ADsafe, 313
typy komunikatów, 120
uruchamianie z poziomu aplikacji
tytu , 129
internetowej, 301
wy wietlanie komunikatów, 119, 120, 121, 122,
uruchamianie z poziomu wiersza polece , 295
123, 124, 125, 126
wymagania, 293
wy wietlanie przy u yciu Shinding, 144
zabezpieczanie kodu HTML-a i JavaScriptu, 295
zak adki, 130, 131, 132, 133
zmiana formatu kodu, 300
zapisywanie stanu z preferencjami
Caja Playground, 306
u ytkownika, 127, 128
Content, sekcje, 103, 105, 106, 110
GET, 551
Context, zmienna, 248
getBool(), 128
createDismissibleMessage(), 123, 126
getCallback(), 135
cross-site scripting, 30
getDataSet(), 234, 235
ctype, parametr, 439, 440
getIndex(), 136
Cur, zmienna, 249
getInt(), 128
getName(), 136
D
getNameContainer(), 136
getSelectedTab(), 134, 135
data pipelining, Patrz potokowe przesy anie
getString(), 128
danych
getTabs(), 134, 135
DataRequest, znacznik, 228, 229
Google, 68, 69
DELETE, 554, 555
graf powi za spo eczno ciowych, 59, 60, 61, 72,
displayTabs(), 134
563
document.createElement, 291
DOM, obiekt, 315, 317
metody, 316
H
drive-by download, 31
hAtom, 556
hCalendar, 556
E
hCard, 556
HEAD, 555
Email, obiekt, 185
hMedia, 557
entity relationships, Patrz relacje z podmiotami
hNews, 557
Enum, obiekt, 186
hProduct, 557
enum, typ danych, 103
hRecipe, 557
hResume, 557
F
hReview, 557
HTTP, kody odpowiedzi, 549, 550
Facebook, 66, 67, 69
http, obiekt, 210, 213, 214
graf powi za spo eczno ciowych, 72, 75
HttpRequest, znacznik, 229, 230
implementacja Open Graph, 410, 411
hunter selector, Patrz selektor my liwego
kana y komunikacji, 73
568 Skorowidz
Poleć książkę
Kup książkę
ModulePrefs, w ze , 97, 98
I
Icon, element, 99
Link, element, 100, 101
iframe, 29, 30, 151, 152, 153, 288
Locale, element, 99, 100
IRI, 563
Optional, element, 98
Preload, element, 98, 99
J
Require, element, 98
My, zmienna, 249, 250
Janrain OpenID, 497
instalacja, 497
JavaScript
N
dwuetapowa autoryzacja OAuth, 351, 352, 353
Name, obiekt, 187
interfejs API, 265, 266
newDataRequest(), 189, 190
umieszczanie zdarze w znacznikach, 309
newFetchPersonRequest(), 190
wykrywanie niebezpiecznych elementów, 305
NIST, poziomy pewno ci, 481
JSLint, 305, 306
O
K
OAuth, 18, 32, 337, 340, 341, 348, 349
kana y komunikacji, 73
OAuth 1.0a
klaster jeden do wielu, 61
autoryzacja dwuetapowa, 350, 351, 352
komunikat
autoryzacja trzyetapowa, 350, 354
czasowy, 120, 122, 123
brakuj ce lub powtarzaj ce si parametry, 369
statyczny, 120, 121, 122
diagnozowanie b dów, 369
z mo liwo ci zamkni cia, 120, 121
dwukrotne kodowanie parametrów podpisu,
kontener, 21, 22, 23, 27, 28, 563
370
aktualizacje, 28
nieprawid owa metoda podpisywania da ,
czas pracy, 28
371
profil u ytkownika, 23
nieprawid owe punkty ko cowe URI, 370, 371
strumie aktywno ci, 23, 24, 25
pobranie tokenu dania, 343, 344
uszkodzone funkcje, 28
pobranie zweryfikowanego przez
zmiany obs ugiwanych funkcji, 28
u ytkownika tokenu dania, 345, 346
znajomi i powi zania, 23, 24
przep yw pracy, 341
utrata wa no ci przez token, 372
L
uzyskanie klucza konsumenta i klucza tajnego,
341, 342
lokalizacja, 272, 273, 275
wymiana zweryfikowanego tokenu dania
LRDD, 564
na token dost pu, 346, 347
OAuth 2, 373
M
diagnozowanie b dów, 396
Facebook, 381, 382, 383
message bundle, Patrz pakiety komunikatów
komunikaty o b dach, 398, 399
metadane, 403
parametry komunikatów o b dach, 398
mikroformat, 556, 557
przep yw pracy, 373
minimessage, biblioteka, 119
reagowanie na kody b dów, 397
mmlib_table, 126
ledzenie wa no ci tokenu dost pu, 397
mmlib_xlink, 127
weryfikacja danych dania, 396
model
oauth_authorization_expires_in, 348
grupowy, 67, 68, 69, 70
oauth_callback, 344
opt-in, 63, 64
oauth_callback_confirmed, 344
opt-out, 64
oauth_consumer_key, 344, 347
po cze , 66, 67
oauth_expires_in, 344, 348
ledzenia, 65, 66
oauth_nonce, 344, 347
Skorowidz 569
Poleć książkę
Kup książkę
oauth_signature, 344, 347 podstawowy kontener gad etów, 147, 148
oauth_signature_method, 344, 347 przysz o , 276
oauth_timestamp, 344 REST, 275
oauth_token, 344, 347 serwer podstawowego interfejsu API, 147, 148
oauth_token_secret, 344 serwer spo eczno ciowego interfejsu API, 149
oauth_verifier, 347 serwer spo eczno ciowych elementów API, 147
oauth_version, 344, 347 specyfikacja, 147
obiekt pakietu, 321 specyfikacja w formacie XML, 96, 97
obiekt spo eczno ciowy, 564 szablony, 240, 241, 243, 244, 245, 246
OExchange, 18, 433 UserPref, w ze , 97, 101, 102, 103
dzia anie, 433, 434 opensocial.newActivity(), 205
implementacja, 435, 437, 438 opensocial.newMediaItem(), 204
zastosowania, 434, 435 opensocial.Person.Field.ABOUT_ME, 160
one-to-few cluster, Patrz klaster jeden do wielu opensocial.Person.Field.ACTIVITIES, 160
Open Graph, 18, 280, 402, 403 opensocial.Person.Field.ADDRESSES, 161
dane audio, 408 opensocial.Person.Field.AGE, 161
dane geolokalizacyjne, 405 opensocial.Person.Field.BODY_TYPE, 162
dane kontaktowe, 406 opensocial.Person.Field.BOOKS, 162
dane wideo, 407 opensocial.Person.Field.CARS, 163
dzia anie, 403, 404 opensocial.Person.Field.CHILDREN, 163
implementacja, 404 opensocial.Person.Field.CURRENT_LOCATION,
implementacja w serwisie Facebook, 410, 411 163
wady, 419, 420 opensocial.Person.Field.DATE_OF_BIRTH, 164
open source, 26, 547, 548 opensocial.Person.Field.DRINKER, 164
wady, 548 opensocial.Person.Field.EMAILS, 165
zalety, 547 opensocial.Person.Field.ETHNICITY, 165
OpenID, 18, 32, 461, 462, 463, 510 opensocial.Person.Field.FASHION, 166
Attribute Exchange, Patrz Attribute Exchange opensocial.Person.Field.FOOD, 166
b dy, 508, 509 opensocial.Person.Field.GENDER, 166
decentralizacja, 462 opensocial.Person.Field.HAPPIEST_WHEN, 167
dostawcy, 469 opensocial.Person.Field.HAS_APP, 167
hybryda z OAuth, 511, 512, 514, 515, 516, 517, opensocial.Person.Field.HEROES, 168
519, 520 opensocial.Person.Field.HUMOR, 168
implementacja, 484 opensocial.Person.Field.ID, 168
odkrywanie domen, 469, 471 opensocial.Person.Field.INTERESTS, 169
Provider Authentication Policy Extension, opensocial.Person.Field.JOB_INTERESTS, 169
Patrz Provider Authentication Policy opensocial.Person.Field.JOBS, 170
Extension opensocial.Person.Field.LANGUAGES_SPOKEN,
rozszerzenia, 471, 483 170
Simple Registration, Patrz Simple Registration opensocial.Person.Field.LIVING_ARRANGEMENT,
uwierzytelnianie, 464 171
wady, 514 opensocial.Person.Field.LOOKING_FOR, 171
zalety, 514 opensocial.Person.Field.MOVIES, 172
OpenLike, 75, 76 opensocial.Person.Field.MUSIC, 172
integracja widgetu, 75 opensocial.Person.Field.NAME, 172
OpenSocial, 18, 145 opensocial.Person.Field.NETWORK_PRESENCE,
Content, sekcje, 103, 105, 106, 110 173
j zyk znaczników, 270, 271 opensocial.Person.Field.NICKNAME, 173
kontener gad etów spo eczno ciowych, 148, opensocial.Person.Field.PETS, 174
149, 150 opensocial.Person.Field.PHONE_NUMBERS, 174
kontener OpenSocial, 148, 150 opensocial.Person.Field.POLITICAL_VIEWS, 175
kontenery aplikacji zgodne ze standardem, 146 opensocial.Person.Field.PROFILE_SONG, 175
ModulePrefs, w ze , 97, 98 opensocial.Person.Field.PROFILE_URL, 175
570 Skorowidz
Poleć książkę
Kup książkę
opensocial.Person.Field.PROFILE_VIDEO, 176 parametry dynamiczne, 238, 239
opensocial.Person.Field.QUOTES, 176 Partuza, 18, 87, 88, 564
opensocial.Person.Field.RELATIONSHIP_STATUS, instalacja w systemie Mac OS X, 88, 89, 90
177 instalacja w systemie Windows, 91, 94, 95, 96
opensocial.Person.Field.RELIGION, 177 instalacja, testowanie, 96
opensocial.Person.Field.ROMANCE, 177
wymagania, 88
opensocial.Person.Field.SCARED_OF, 178
PeopleRequest, znacznik, 229, 230, 231
opensocial.Person.Field.SCHOOLS, 178
Person, obiekt, 154
opensocial.Person.Field.SEXUAL_ORIENTATION,
metody, 155
179
pola, 160
opensocial.Person.Field.SMOKER, 179
rozszerzanie, 183
opensocial.Person.Field.SPORTS, 180
p tle, 253, 254, 256, 257
opensocial.Person.Field.STATUS, 180
zagnie d one, 255
opensocial.Person.Field.TAGS, 180
Phone, obiekt, 188, 189
opensocial.Person.Field.THUMBNAIL_URL, 181
PHP
opensocial.Person.Field.TIME_ZONE, 181
budowanie subskrybenta, 450, 451, 452
opensocial.Person.Field.TURN_OFFS, 182
budowanie wydawcy, 446
opensocial.Person.Field.TURN_ONS, 182
OAuth 1.0a, 355, 357, 359, 360, 361, 362
opensocial.Person.Field.TV_SHOWS, 183
OAuth 2, 383, 384, 385, 386
opensocial.Person.Field.URLS, 183
OpenID, 485, 486, 487, 488, 489, 490, 492, 493,
opensocial.template, 266
494, 495, 496
opensocial.template.getTemplate(), 266
uwierzytelnianie hybrydowe, 522, 523, 525,
opensocial.template.process(), 267
527, 528, 529, 530, 531, 532, 533
opensocial.template.Template.render(), 267
w ze Open Graph, 413, 414, 415, 416
opensocial.template.Template.renderInto(), 268
PHP, rodowisko, 560
opensocial_app_id, 215
instalacja w systemie Mac OS X, 560, 561
opensocial_app_url, 215
instalacja w systemie Windows, 561
opensocial_instance_id, 215
phpMyAdmin, 92, 93, 94
opensocial_owner_id, 215
POST, 552, 553
opensocial_viewer_id, 215
potokowe przesy anie danych, 225, 226
operatory porównywania, 248
czenie z szablonami, 258
Organization, obiekt, 187, 188
obs uga b dów, 237
os:Badge, 270, 272
po stronie klienta, 234
os:Get, 270, 272
powiadomienia, generowanie, 202
os:Html, 260
bezpo rednie, 205, 206, 207
os:If, 252
pasywne, 205, 207, 208
os:Name, 270, 271
tre multimedialna, 204, 205
os:PeopleSelector, 270, 271, 272
powi zanie, 564
os:Render, 260, 261, 262
poziomy pewno ci NIST, 481
os:Repeat, 254
Provider Authentication Policy Extension, 471, 479
osapi.activities.create, 202, 203
metody uwierzytelniania, 480
osapi.people.get, 155, 192
przegl daj cy, 564
osapi.people.getOwner, 158
PubSubHubbub, 18, 278, 279, 440
osapi.people.getOwnerFriends, 159
dzia anie, 441, 442, 443
osapi.people.getViewer, 156, 157, 191
zalety, 443, 444
osapi.people.getViewerFriends, 157
PUT, 553, 554
OSML, Patrz OpenSocial, j zyk znaczników
putDataSet(), 235
OwnerRequest, znacznik, 231, 232
Python
budowanie subskrybenta, 452, 454
budowanie wydawcy, 448
P
konfiguracja rodowiska, 562
pakiety komunikatów, 273, 274, 275
OAuth 1.0a, 363, 364, 365, 366, 368, 369
PAPE, Patrz Provider Authentication Policy
OAuth 2, 387, 388, 389, 390, 392
Extension
Skorowidz 571
Poleć książkę
Kup książkę
Python Simple Registration, 471, 472
OpenID, 497, 498, 499, 500, 501, 502, 503, 504, pola, 472
505, 507 SREG, Patrz Simple Registration
uwierzytelnianie hybrydowe, 533, 534, 535, strumie aktywno ci, 200, 201
536, 537, 538, 539, 540, 542, 543, 545 personalizacja aplikacji, 201
w ze Open Graph, 416, 418, 419 promocja aplikacji, 200
umieszczanie komunikatu, 202, 203
Subversion, 557, 558
R
instalacja w systemie Mac OS X, 558
instalacja w systemie Windows, 558
registerListener(), 236
SVN, 557
relacje
swapTabs(), 135
bezpo rednie, 60, 61
szablony, 240, 241, 245, 246
po rednie, 61
biblioteki, 262, 263
z podmiotami, 71
czenie z potokowym przesy aniem danych,
rel-directory, 557
258
rel-enclosure, 557
wy wietlanie, 243, 244, 245
rel-license, 557
rel-nofollow, 557
rel-tag, 557
T
removeTab(), 135
renderOption, opcja, 300 TabSet, obiekt, 134
REST, 551, 564 tokeny, 340
rozproszone frameworki internetowe, 277, 564 Top, zmienna, 250
RPC, 564 Twitter, 65, 66
OAuth, 348, 349
S
U
Salmon, 18, 279, 455
dzia anie, 455, 456 uprawnienia, 37, 38
implementacja, 459 dost pu do danych, 393, 394
ochrona przed spamem, 458 dost pu do stron, 394
same-origin policy, Patrz zasada tego samego publikacji, 394
pochodzenia Url, obiekt, 189
selektor atrybutów, 318, 319 UserPref, w ze , 97, 101, 102, 103
selektor my liwego, 317 UserPrefs, obiekt, 239
selektor precyzyjnego wyboru, 318 us ugi sieciowe, 549
selektor stanu, 319, 320 uwierzytelnianie podstawowe, 337, 338, 339
selektor w a ciwo ci, 318 wady, 339, 340
semantyka, 564 u ytkownicy
set(), 128 lista wyboru, 271
setSelectedTab(), 135 odznaka, 272
setTitle(), 129, 130 podzia na klastry, 62, 63
Shinding, 18, 79, 80, 565 strumie aktywno ci, 200, 201
instalacja w systemie Mac OS X, 81, 82, 83 udost pnianie prywatnych danych, 63, 64
instalacja w systemie Windows, 84, 85, 86 uzyskiwanie profilu, 189, 191
instalacja, testowanie, 86, 87 wy wietlanie nazwiska, 271
konfiguracja, 80 znajomi, 192
rozszerzanie o w asne biblioteki JavaScript,
136, 137, 138
V
wy wietlanie gad etu, 144
sie semantyczna, 556, 564
ViewerRequest, znacznik, 231, 232
sie spo eczno ciowa, 565
ViewParams, obiekt, 239
572 Skorowidz
Poleć książkę
Kup książkę
W
Y
WebFinger, 18, 429, 430
Yahoo!, 68, 69
geneza, 429, 430
OAuth, 348, 349, 350
implementacja, 430, 432
YAML, 565
wady, 432, 433
YAP, 565
widoki aplikacji, 32
YUI 2.8, biblioteka, 308, 309
domowy, 33, 34
domy lny, 36
Z
du y, 33
kanwy, 35, 36
zabezpieczenia, 29, 31
ma y, 32, 34
zasada tego samego pochodzenia, 30, 550
niedopracowanie, 42
omijanie wymaga , 551
profilu, 34, 35
zmienne specjalne, 248
w a ciciel, 565
Context, 248
wyra enia, 247
Cur, 249
wyra enia warunkowe, 250, 251, 252
My, 249, 250
Top, 250
znaczniki semantyczne, 556
X
zrównowa one publikowanie powiadomie , 209
XFN, 557
xFolk, 557

XHTML Friends Network, 557
xoauth_public_key, 215
dania danych, rodzaje, 228
XOXO, 557
danie bez nadzoru, 566
XRD, deskryptor, 436
XRDS, 565
XRI, 565
XSS, ataki, 30
Skorowidz 573
Poleć książkę
Kup książkę
574 Skorowidz
Poleć książkę
Kup książkę


Wyszukiwarka

Podobne podstrony:
Inbound Marketing?j sie poznac w Google serwisach spolecznosciowych i na blogu inmark
Składka na ubezpieczenia społeczne młodocianych
tworzenie aplikacji na?cebook
program egzaminów na uprawnienia budowlane styczeń 2010
Program diety na dni Elavia
,,Polityka Oświatowa Samorządu Terytorialnego koncepcja programu ,, opracowanie na zaliczenie POL
aplikacja na top
Poglądy Z Krasińskiego i S Żeromskiego na rewolucję społeczną
10 sposobów na manipulację społeczeństwem
155Metoda uzyskiwania wymaganego programu elucji na wlocie do kolumny
HTML5 Programowanie aplikacji htm5pa
aplikacja na koszulkÄ™ waszka

więcej podobnych podstron