Aplikacje
Dwa miliony użytkowników Twojego serwisu WWW!
Rejestracja developera
Podczas rejestracji jako developer trzeba podać następujące dane:- Nazwa developera
- Będzie wyświetlana użytkownikom m.in. przy ustawieniach dotyczących usług developera.
Developer otrzymuje od Grono.net:
- Tajny klucz API
- tym kluczem partner komunikuje się z Gronem po stronie serwera.
Rejestracja aplikacji
Rejestracja aplikacji wymaga podania następujących danych:
- Nazwa aplikacji
- Będzie wyświetlana użytkownikom m.in. przy ustawieniach oraz request.
- Opis aplikacji (opcjonalnie)
- Krótka instrukcja dla użytkownika, o zawartości i przeznaczeniu aplikacji...
- Okładka reprezentująca aplikację.
- Fotka reprezentująca aplikację.
- Canvas url
- Adres pod jakim aplikacja będzie dostępna w serwisie.Przykład: jeżeli ustawimy canva na demo, to aplikacja dla gronowiczów dostępna będzie pod adresem http://grono.net/dev/app/demo/
- Adres zwrotny
- Z tego adresu pobierany będzie kontent strony na gronie - jeżeli użytkownik wpisze w przeglądarce adres http://grono.net/dev/app/{canva_url}/{url}, to w Gronie zostanie wyrenderowana strona, znajdująca się pod adresem {adres zwrotny}/{url}/.
- Typ aplikacji
- Określa czy aplikacja będzie mobilna (dostępna pod adresem http://m.grono.net/dev/app/{canva_url}) czy "webowa" (dostępna pod adresem http://grono.net/dev/app/{canva_url}). Aplikacja mobilna i "webowa" jest integralną częścią tylko jednego serwisu m.grono.net (aplikacja mobilna) lub grono.net (aplikacji "webowa"), np. feed aplikacji mobilnej jest wyświetlany tylko pod adresem m.grono.net.
- Regulamin (opcjonalnie)
- Aby skorzystać z aplikacji na Gronie, użytkownik musi zaakceptować regulamin, znajdujący się pod podanym adresem.
Partner otrzymuje od Grono.net:
- Klucz publiczny
- Tym kluczem partner identyfikuje się z naszym serwerem.
Parametry przekazywane metodą POST lub GET do serwera developera
- Parametr grono_uid
- Id użytkownika korzystającego z aplikacji grono_uid przesyłane jest do serwera w chwili pobierania kontentu strony.
- Parametr grono_auth_token
- Token służacy do weryfikacji podpisu (losowy ciąg cyfr i liter o długości 32).
- Parametr grono_sig
-
"Podpis" służacy do weryfikacji czy request pochodzi z Grona. Aby zweryfikowac argumenty przychodzące metodą GET lub POST (w postaci slownika) z serwera Grono należy sprawdzić podpis 'grono_sig'. W tym celu należy:
1) usunąć klucz grono_sig ze słownika 2) dodać klucze grono_secret_key={twoj klucz prywtny} oraz grono_public_key={twoj klucz publiczny} 3) posortowac alfabetycznie słownik po kluczach (w przypadku listy sortujemy rownież listę); wszystkie wartosci i klucze powinny byc stringiem, nie unicodem (zamieniamy unicode->string stosując system kodowania UTF-8 ) 4) skonkatenować parę klucz wartość w formacie k=v 5) stworzyc md5 hash powstałego stringu Przykład dla otrzymanego słownika: {'grono_uid':u'0', 'grono_auth_token':u'trJxFzt1zhgmDS7MSOimDNJVfLM7Tazg', 'app_value_single':u'3', 'app_value_multi':[u'6', u'4', u'5'], 'grono_sig':u'd88dd399b02ab31a94e956172312dcbd'} 1) {'grono_uid':u'0', 'grono_auth_token':u'trJxFzt1zhgmDS7MSOimDNJVfLM7Tazg', 'app_value_single':u'3', 'app_value_multi':[u'6', u'4', u'5']} 2) {'grono_uid':u'0', 'grono_auth_token':u'trJxFzt1zhgmDS7MSOimDNJVfLM7Tazg', 'app_value_single':u'3', 'app_value_multi':[u'6', u'4', u'5'], 'grono_secret_key':'12345', 'grono_public_key':'0'} 3) {'app_value_multi':['4', '5', '6'], 'app_value_single':'3','grono_auth_token':'trJxFzt1zhgmDS7MSOimDNJVfLM7Tazg', 'grono_public_key':'0', 'grono_secret_key':'12345', 'grono_uid':'0'} 4) app_value_multi=['4', '5', '6']app_value_single=3grono_auth_token=trJxFzt1zhgmDS7MSOimDNJVfLM7Tazg grono_public_key=0grono_secret_key=12345grono_uid=0 app_value_multi=['4', '5', '6']app_value_single=3grono_auth_token=trJxFzt1zhgmDS7MSOimDNJVfLM7Tazg grono_public_key=0grono_secret_key=12345grono_uid=0 5) grono_sig = 'd88dd399b02ab31a94e956172312dcbd' - Paramatry rozpoczynające się frazą grono_field
- Zarezerwowane są dla obsługi wewnętrznych formularzy przez serwis Grono.net i nie mogą być używane przez developera (są one automatycznie usuwane).
Jak pisać HTML dla aplikacji gronowej
HTML nie powinien zawierać takich tagów jak html, head, title, body (te tagi są renderowane przez template grona). Developer jedynie dodaje kontent, który zostanie wyrenderowany w tagu body. Kontent ten może zawierarać wszystkie tagi HTML, które są dozwolone wewnątrz body. Dodatkowo, deweloper może korzystać z natępujących tagów grono:request-form, grono:publish-form, grono:publish-button, grono:publish-overlay, grono:user-name , grono:user-sex , grono:user-avatar, grono:user-avatar-list, grono:tabs, grono:submit, grono:button, grono:cancelbutton, grono:css, grono:js oraz grono:skin.
Gronowe TAGI
- grono:request-form (niedostępny w aplikacji mobilnej)
-
Tag ten służy do wysyłania request'a. Aplikacja może stworzyć request, ktróry będzie pojawiał sie na głównej stronie (W trakcie implementacji) oraz pod adresem http://grono.net/shoutbox/requests/. Request jest zwykle inicjowany przez przyjaciela użytkownika i często wymaga od użytkownika podjęcia jakiejś formy działania (Akceptacji, Zignorowania), o której jest poinformowana aplikacja. Przykładowo, użytkownik grona może wysłać podarunek znajomemu. Znajomy otrzyma request, który może zaakceptować bądź zignorować. W przypadku akceptacji, przenoszony jest na stronę aplikacji gdzie może obejrzeć otrzymany podarunek. Zobacz przykład
Tag grono:request-form renderuje formularz wysyłający request do wybranych użytkowników. W tagu grono:request-form muszą znajdować się tagi grono:multi-friend-selector oraz grono:overlay-content. Pierwszy z nich renderuje listę użytkowników, do których można wysłać request'a, drugi - pokazuje w jaki sposób wyrenderować treść request'a. W momencie, gdy użytkownik potwierdzi akcje wysłania request'a do przyjaciela, grono przekaże wszystkie pola formalarza na adres action metodą method (action i method są wpisywane jako parametry do tagu grono:request-form).
Przykładowa implementacja:
<grono:request-form action="/requests/" method="POST"> <grono:overlay-content> <grono:content-title value="zapraszam Cię do aplikacji DEMO" href="/dev/app/demo"/> <grono:content-description value="W aplikacji DEMO możesz nauczyć się jak stworzyć swoją aplikację w grono.net"> <grono:content-image_url value="http://b12.grono.net/42/80/gallery-74746219-500x500.jpg"/> <grono:content-action label="Akceptuję zaproszenie" href="/dev/app/demo"/> </grono:overlay-content> <grono:multi-friend-selector/> <grono:submit name="Wyślij zaproszenie"/> </grono:request-form>
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Opcjonalnie action URL Miejsce, gdzie użytkownik zostanie przekierowany po zaakceptowaniu formularza generowanego przez grono:request-form Opcjonlanie method String Ustaw je na GET lub POST, tak jak w formularzu. UWAGA! Jeśli method albo action nie zostaną zdefiniowane, request zostanie wysłany asynchronicznie.
- grono:publish-form
-
Tag publish-form jest podstawowym narzędziem dla developerów do publikacji informacji i wiadomości w aktywnościach użytkowników na stronie głownej oraz ich profilu. Użytkownicy mogą korzystać z publish-form do tworzenia bogatej zawartości łącznie z zamieszczaniem zdjęć. Zobacz przykład
Przykładowa implementacja
<grono:publish-form action="/publisher/" method="GET" > <grono:overlay-content> <grono:content-url value="/publish_form_render_overlay/"/> </grono:overlay-content> <img src="http://b12.grono.net/42/80/gallery-74746219-500x500.jpg " height="60" width="60"/> <input type="radio" name="image" value="0"> <img src="http://b62.grono.net/150/178/gallery-69506458-500x500.jpg" height="60" width="60"/> <input type="radio" name="image" value="1"> <grono:submit name="OK"/> </grono:publish-form>Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Opcjonlanie action URL Miejsce, gdzie użytkownik zostanie przekierowany po zaakceptowaniu formularza generowanego przez grono:request-form Opcjonlanie method String Ustaw je na GET lub POST, tak jak w formularzu. -
Tag ten służy do dodawnia informacji na aktywnościach użytkownika. Działa podobnie jak grono:publish-form, ale overlay wyskakuje po naciśnięciu przycisku. Zobacz przykład
Przykładowa implementacja
<grono:publish-button name="Nazwa przycisku"> <grono:overlay-content> <grono:content-title value="Tytuł akcji (grono:publish-button)" href="http://grono.net/dev/app/demo/"/> <grono:content-description value ="Opis akcji"/> <grono:content-image_url value="http://b62.grono.net/120/255/gallery-72561868-500x500.jpg"/> </grono:overlay-content> </grono:publish-button>
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane name String Nazwa przycisku - grono:publish-overlay (niedostępny w aplikacji mobilnej)
-
Działa podobnie do grono:publish-form. W tym tagu overlay wyskakuje od razu po załadowaniu strony. Zobacz przykład
Przykładowa implementacja
<grono:publish-overlay> <grono:overlay-content> <grono:content-title value="Tytuł akcji (grono:publish-overlay)" href="http://grono.net/dev/app/demo/"/> <grono:content-description value ="Opis akcji"/> <grono:content-image_url value="http://b62.grono.net/120/255/gallery-72561868-500x500.jpg"/> </grono:overlay-content> </grono:publish-overlay>
- grono:user-name
-
Tag ten służy do generowania nickname użytkownika. Zobacz przykład
Przykładowa implementacja
<grono:user-name uid="1138418"/ >
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane uid Int Id użytkownika Opcjonalne capitalize Bool True - wyświetlamy drukowane litery, False - tylko małe litery Opcjonalne link Bool True - nazwa 'linkuje' do profilu, False (default) - nazwa nie 'linkuje' do profilu - grono:user-sex
-
Tag ten służy do generowania płci użytkownika. Zwraca wartości 0 (błędny użytkownik), 1 (male/mężczyzna), 2 (female/kobieta). Zobacz przykład
Przykładowa implementacja
<grono:user-sex uid="1138418"/ >
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane uid Int Id użytkownika - grono:user-avatar
-
Tag ten służy do generowania avatar'a uzytkownika. Zobacz przykład
Przykładowa implementacja
<grono:user-avatar uid="1138418"/>
Parametry (nie mają znaczenia w apliakcji mobilnej)
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane uid Int Id użytkownika Opcjonalne blimp_status Bool True - wyświetlany jest blimp pod avatarem (default = True) Opcjonalne icons Bool True - wyświetlane linki pod avatar'em (dafault = True) Opcjonalne small Bool True - małe avatar'y, False - duże avatar'y (dafeault = False). Jeśli zostanie ustawione small na True wtedy automatycznie znikają blimp oraz linki pod avatarem. - grono:user-avatar-list (niedostępny w aplikacji mobilnej)
-
Tag ten służy do generowania listy avatar'ow uzytkownikow. Zobacz przykład
Przykładowa implementacja
<grono:user-avatar-list uids="1138418,1138418" small="True"/>
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane uids String Lista id'ikow uzytkownikow poloacznych przecinkiem. Opcjonalne blimp_status Bool True - wyświetlany jest blimp pod avatarem (default = True) Opcjonalne icons Bool True - wyświetlane linki pod avatar'em (dafault = True) Opcjonalne small Bool True - małe avatar'y, False - duże avatar'y (dafeault = False). Jeśli zostanie ustawione small na True wtedy automatycznie znikają blimp oraz linki pod avatarem. - grono:tabs
-
Renderuje standartowe karty do nawigacji. Tag musi zawierać co najmniej jeden tag grono:tab-itme. Zobacz przykład
<grono:tabs> <grono:tab-item title="Tab1" href="/tab1" selected="True"/> <grono:tab-item title="Tab2" href="/tab2" selected="False"/> <grono:tab-item title="Tab3" href="/tab3" selected="False"/> </grono:tabs>
- grono:overlay-content
-
Tag reprezentuje zawartość overlay'a. Musi być dzieckiem tagów grono:request-form, grono:publish-form, grono:publish-overlay oraz grono:publish-button. Istnieją dwie możliwości konfiguracji overlay'a: statyczna oraz z zapytaniem serwera developera. Druga metoda jest bardzo przydatna przy tagich tagach jak grono:request-form oraz grono:publish-form, gdzie zawartość kontentu może zależeć od wybranego elementu w formularzu.
Konfiguracja statyczna
Wewnątrz tagu grono:overlay-content powinny znajdować się takie tagi jak:
- grono:content-title - renderuje tytuł
- grono:content-description - renderuje opis
- grono:content-image_url lub grono:content-image - renderują fotkę (opcjonalnie)
- grono:content-action - renderuje przyciski pod requestem (opcjonalne i renderowane tylko jeśli tag grono:overlay-content jest dzieckiem tagu grono:request-form)
Konfiguracja z zapytaniem serwera developera
Wewnątrz tagu grono:overlay-content powinny znajdować się tag:
- grono:content-url - wskazuje miejsce gdzie serwer gronowy zapyta o content overlay'a.
Jeśli grono:overlay-content będzie dzieckiem grono:request-form lub grono:publish-form, serwer grona zapyta o content serwer developera wysylajac metodą POST informacje o zaznaczonych polach w formularzu. Aby kontent prawidłowo się wyświetlił serwer developera pod adresem wskazanym przez tag grono:content-url powinien zwrócić JSON'a o następującej treści:
{'content-title':'Tytul request', 'content-description':'Request description', 'content-description_href':'http://grono.net', 'content-image_url':'url do obrazka'})lub{'content-title':'Tytul request', 'content-description':'Request description', 'content-description_href':'http://grono.net', 'content-image':[{'url':'url do obrazka', 'href':'adres pod ktory linkuje shout'}]})Dodatkowo, jeśli chcemy pod request miec pewne akcje to musimy dodac:
{'content-title':'Tytul request', 'content-description':'Request description', 'content-description_href':'http://grono.net', 'content-image_url':'url do obrazka', 'content-action':[{'label':'Akceptuj', 'href':'http://grono.net/dev/app/demo/'}, {'label':'Ignoruj', 'href':'http://grono.net/dev/app/demo/'}]})W przypadku wyświetlania informacji o błędach serwer powinien zwrócić JSON'a w postaci (Zobacz przykład , Nie zaznaczaj żadnej fotki i naciśnij OK):
{'content-error':'Wybierz jakis obrazek'} - grono:multi-friend-selector
-
Tag renderuje wybierak przyjaciół użytkownika oglądającego stronę. Musi być dzieckiem grono:request-form. Wysyła do serwera metodą wskazaną przez formularz wartość 'friends' wskazującą na id-iki wybranych przyjaciół.
Wymagane/Opcjonalne Nazwa Typ Opis Opcjonalne name String Nazwa klucza w GET lub POST, pod ktorym bedzie lista id wybranych osob. W przypadku PHP nalezy podac nazwe w formacie: name[]. - grono:tab-item
-
Renderuje standardową zakładkę grona. Musi zawsze być dzieckiem grono:tabs.
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane title String Nazwa karty Wymagane href String Względny adres do aplikacji Wymagane selected Bool Wskazuje która zakładka jest aktywna. Default = False
- grono:content-title
-
Musi być dzieckiem grono:overlay-content i wskazuje na tytuł wiadomości
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane value String Tytuł request'a, wiadomości, shout'a
- grono:content-description
-
Musi być dzieckiem grono:overlay-content i wskazuje na opis wiadomości
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane value String Opis request'a, wiadomości, shout'a
- grono:content-image_url
-
Musi być dzieckiem grono:overlay-content i wskazuje url do fotki
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane value String Url do fotki wyświeltanej w wiadomości
- grono:content-image
-
Musi być dzieckiem grono:overlay-content i wskazuje url do fotki. Pierwszeństwo ma natomiast tag grono:content-image_url. grono:content-image jest renderowany tylko wtedy, gdy nie ma tagu grono:content-image_url.
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane url String Url do fotki wyświeltanej w wiadomości Opcjonalny href String Adres pod który kieruje fotka w shoutach w aktywnościach. Nie można ustawić tego linku w request'ach. Default jest ustawiony na /dev/app/{Canva aplikacji}.
- grono:content-action
-
Musi być dzieckiem grono:overlay-content i renderuje akcje request'a (Przyciski, które może nacisnąć użytkownik i znajdujące się pod request'em). Tych tagów może być dowolnie dużo o są renderowane tylko wtedy gdy tag grono:overlay-content jest dzieckiem grono:request-form
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane label String Nazwa przycisku Wymagane href String Adres na jaki zostanie przekierowany użytkownik po naciśnięciu przycisku pod request'em
- grono:content-url
-
Musi być dzieckiem grono:overlay-content i wskazuje adres pod którym serwer developera zwróci informacje o zawartości overlay'a. Szczegóły
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane value String Url, pod którym serwer devolopera zwróci JSON zawierający informacje o zawartości overley'a
- grono:submit
-
Renderuje przycisk do zatwierdzania formularzy
Przykładowa implementacja
<grono:submit name="Nazwa przycisku" />
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane name String Nazwa przycisku
-
Renderuje link w formie przycisku
Przykładowa implementacja
<grono:button name="Nazwa przycisku" href="/"/>
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane name String Nazwa przycisku Wymagane href String Adres do którego linkuje przycisk
-
Renderuje link w formie przycisku anulującego
Przykładowa implementacja
<grono:cancelbutton name="Anuluj akcję" href="/"/>
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane name String Nazwa przycisku Wymagane href String Adres do którego linkuje przycisk
- photo-selector
-
Renderuje formularz z selektorem fotek użytkownika. Formularz wysyła metodą POST pid'y wybranych fotek pod kluczem object_id
<grono:photo-selector href="/dev/app/demo" />
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane href String Adres url, na który metodą POST zostaną wysłane pid'y wybranych zdjęć. Opcjonalnie name String Nazwa przycisku Opcjonalnie max Intiger Maksymalna ilość zdjęć jaką użytkownik może wybrać (Standartowo jest ustawione 5 zdjęć)
- grono:photo
-
Renderuje fotkę o znanym id (pid)
Przykładowa implementacja
<grono:photo pid="79585759" size='n'/>
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane pid Intiger Id fotki Opcjonalnie size 'n' lub 't' określa rozmiar fotki ('t' - thumbnail, 'n' - normalny)
- grono:css
-
Renderuje tag link, pozwalający załadować css
Przykładowa implementacja
<grono:css href="http://grono.net/s/css/apps/gifts.css"/>
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane href String Adres, z którego ładowane są css-y
- grono:js
-
Renderuje tag script, pozwalający załadować kod js
Przykładowa implementacja
<grono:js src="http://grono.net/s/css/apps/gifts.js"/>
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane src String Adres, z którego ładowane są js-y
- grono:skin
-
Pozwala ustawić na stronie skórkę publiczną.
Przykładowa implementacja
<grono:skin id="123"/>
Parametry
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane id Intiger ID skórki publicznej (nie prywatnej)
Jak podejrzeć stronę HTML stworzoną przez developera
Aby ułatwić pisanie aplikacji w gronie, grono umożliwiło podglądanie kodu stworzonego przez developera. Na dowolnej stronie aplikcaji należy do adresu w przeglądarce przekazać parametr GET html=True. Np. jeśli chcemy obejrzeć kod developera renderującej stronę http://grono.net/dev/app/demo/index/, należy wpisać adres http://grono.net/dev/app/demo/index/?html=True
Dla ułatwienia pisania aplikacji grono stworzyło dwie aplikacje testowe dostępne pod adresemi http://grono.net/dev/app/demo/ - aplikacja "webowa" oraz http://m.grono.net/dev/app/mdemo/ - aplikacja mobilna.
Jak wyrenderować stronę ładowaną ajax'em (tylko dla aplikacji "webowych")
Aby wyrenderować stronę bez belki z menu, tła i innych komponentów Grona należy przesłać metodą POST lub GET parametr ajax = True. Parametr ten powinien być wykorzystywany tylko do asynchronicznego przesyłania danych. Nie można stosować tego parametru do przyslaniania zawartości reklam, menu i innych komponentów Grona.
REST serwer
Developer ma możliwość pobierania informacji o użytkownikach wykorzystując Grono REST serwer. W tym celu należy metodą POST wysłać na adres http://grono.net/pub/app/restserver/ następujące dane:
- grono_public_key
- publiczny klucz Twojej aplikacji.
- format
- format otrzymanych danych z serwera XML lub JSON.
- grono_method
- metoda jaką chcemy wykonać na REST serwerze.
- dodatkowe parametry
- parametry niezbędne do wywołania funkcji grono_method.
- grono_sig
- "podpis" służący do autentyfikacji request'u.
Działanie poszczególnych metod można podejrzeć w zakładce REST serwer, w panelu swojej aplikacji.
Lista metod REST serwera
- grono.friends.get
-
Pobiera id przyjaciół użytkownika zapisanego do aplikacji
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane grono_uid Intiger Id użytkownika
- grono.users.getInfo
-
Pobiera wybrane informacje o użytkowniku zpisanym do danej aplikacji:
- scrname
- nick użytkownika
- age
- wiek użytkownika
- name
- imię użytkownika (pokazywane jeśli ustawione)
- sex
- płeć użytkownika (M - mężczyzna, K - kobieta)
- motto
- motto użytkownika (pokazywane jeśli ustawione)
- surname
- nazwisko (pokazywane, gdy jest niepuste i widoczność jest ustawiona dla wszystkich w gronie)
- city
- nazwa miasta (pokazywane, gdy jest niepuste i widoczność jest ustawiona dla wszystkich w gronie)
- aboutme
- "O mnie" (pokazywane, gdy jest niepuste i widoczność jest ustawiona dla wszystkich w gronie)
Wymagane/Opcjonalne Nazwa Typ Opis Wymagane grono_uid Intiger Id użytkownika