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.
grono:publish-button (niedostępny w aplikacji mobilnej)

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:

  1. grono:content-title - renderuje tytuł
  2. grono:content-description - renderuje opis
  3. grono:content-image_url lub grono:content-image - renderują fotkę (opcjonalnie)
  4. 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:

  1. 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
grono:button

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
grono:cancelbutton

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

Przykładowa implementacja

<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