Nasze strony: gmclan.org gameonly.pl ps-plus.pl gameswithgold.pl n-switch.pl hmt.pl
Fastbar
Powrót do strony głównej
Trzymaj pliki na gmclan.org!
Game Maker w pytaniach i odpowiedziach!
Polska dokumentacja
Tabela wyników ligi 24
Pobierz GM
Akademia GMCLANu
Kategorie bazy artykułów
Artykuły -> Game Maker
Treść artykułu
Facebook - posty na wallu / Android
autor: gnysek (14.12.12) | czas czytania: 6 minut, 50 sekund
Nie było to łatwe, siedziałem ponad godzinę - mam nadzieję, że dzięki temu kursowi zrobicie to w 10 minut :)

Po pierwsze, wysyłanie wiadomości na FB działa tylko w gotowych apkach, nie w runnerze - zatem aby je przetestować, trzeba niestety stworzyć APK - zatem na wersji Studio z samym testem na Androidzie nic nie zrobicie.

Krok 1 - konfiguracja GM:Studio

Pierwsze co robimy, to odpalamy okno File > Preferences i przechodzimy do taba "Android".

Wypełniamy "Certificate Private Keystore". W pole Name i Alias wpisujemy sobie jakieś dowolne nazwy, może to być np. "nick" i "nick2". Name to przy okazji nazwa pliku który z keystorem który się wygeneruje. W pola password wpisujemy jakieś hasło - w oba takie samo!. Resztę można wypełnić według uznania.
Następnie klikamy GENERATE. OK, plik utworzony.

Krok 2 - konfiguracja Facebooka

Wchodzimy na stronę developers.facebook.com i klikamy "+ Utwórz nową aplikację". W okienko które się pojawi wpisujemy nazwę aplikacji (może być nazwa gry), a w drugie wpisujemy unikalną nazwę (będzie to też końcówka url na facebooku do naszej aplikacji). Ja moją nazwałem gmclan-andek :)
Potwierdzamy chęć utworzenia przepisując kod z obrazka.
Teraz pokaże nam się strona Aplikacje > Nazwa > Basic. Zostawcie na razie tę stronę otwartą, przejdziemy do tworzenia haszu dla Androida. Wykumać to z kursu YYG nie było łatwo, ale od czego macie mnie?

Krok 3 - tworzymy hash dla facebooka

Po pierwsze, wchodzimy na stronę: code.google.com.../downloads/list i pobieramy program w wersji dla naszego procesora (patrzcie tylko na te z zielonym FEATURED przy nazwie).
Rozpakowujemy go gdzieś na dysku - może być np. C:/SSL/ - potem i tak go skasujemy. Upewnijcie się tylko, że po rozpakowaniu istnieje ścieżka np. C:/SSL/bin - jeśli nie, to źle rozpakowaliście :)

Teraz tworzymy plik facebook.bat na dysku C. W treści wpisujemy:

kod:@echo Exporting keystore cert
"C:\Program Files\Java\WERSJA_JRE\bin\keytool.exe" -exportcert -alias TWOJ_ALIAS -keystore "PRIVATE_KSTORE" -storepass TWOJE_HASLO > debug.keystore.bin

@echo Converting to sha1
C:\SSL\bin\openssl sha1 -binary debug.keystore.bin > debug.keystore.sha1

@echo Converting to base64
C:\SSL\bin\openssl base64 -in debug.keystore.sha1 -out debug.keystore.base64

@echo Done, Android hash key for Facebook app is:
C:\SSL\bin\openssl base64 -in debug.keystore.sha1
@pause

Pod WERSJA_JRE wpisujemy np. jre5, jre6, lub jre7 - zależnie które mamy na dysku (musicie sami sprawdzić ścieżkę C:\Program Files\Java\).
Pod TWOJ_ALIAS wpisujemy to co mamy w GM:Studio w Prefenrences w zakładce "Android" w polu "Alias" (wpisaliśmy to w kroku 1).
Pod TWOJE_HASLO wpisujemy to samo hasło (jakbyście go już nie pamiętali, checkbox "reveal password" pomoże).
Pod PRIVATE_KSTORE wklejamy zawartość pola "Private KeyStore File" - nazwa tego pliku przed kropką powinna zawierać to samo słowo, które jest w polu Name.

Sprawdzamy raz jeszcze, czy ścieżki do tego całego SSL się zgadzają.

Zapisujemy, klikamy dwukrotnie. Ta Dam! Wygenerował się hash. Nie zamykamy tego okna! Teraz otwieramy plik "debug.keystore.base64" który się wygenerował i sprawdzamy, czy to te same hashe, tak dla pewności - jeśli nie, to być może w innym utworzonym plikun jest ten sam co w oknie konsoli - w każdym bądź razie to ten klucz należy skopiować/przepisać do Facebooka.

Krok 4. Wklejamy hash do Facebooka
Wracamy do przeglądarki i strony Aplikacje > Nazwa > Basic. Klikamy na Native Android App. W Key Hashes wklejamy nasz wygenerowany HASH. "Logowanie do facebooka" zaznaczamy na WŁĄCZONE, reszta pól jest albo pusta, albo "Wyłączone". Klikamy Zapisz.

Na górze widnieje teraz numer AppID: Kopiujemy Go.

Krok 5. Kończymy zabawę :)
Wracamy do GM:Studio. Wchodzimy w GlobalGameSettings i w zakładce Facebook zaznaczamy "use" i wklejamy kod.
Uff. Gra jest gotowa do obsługi Facebooka.

Tworzymy obiekt i w Create wpisujemy:

kod:facebook_init();

var permissions = ds_list_create();
ds_list_add(permissions, "publish_stream");
facebook_login(permissions);
ds_list_destroy(permissions);

virtual_key_add(0,0,display_get_gui_width(), display_get_gui_height(), vk_enter);

sent = false;

Powyższy kod inicjuje Facebooka, ustawia prośbę o dodawanie postów na tablicy (którą user musi zaakceptować). Dodatkowo zrobiłem usuwanie ds_listy, zeby nie zawalała pamięci ;) Potem definiujemy wirtualny klawisz enter na cały ekran [zgodnie z GM:Studio >1.1.700 gdzie virtual keye są nakładane na GUI].

Teraz tworzymy event key press Enter.

Możemy wybrać jedną z dwóch opcji:

A. Wiadomość puszczona cichaczem

kod:if sent = false {
sent = true;
facebook_post_message("Tytuł","Opis","Wiadomość",
"http:// forum.gmclan.org/style_images/8_logo_forum.png","http:// gmclan.org","","");
}

Zmienną sent dodałem dlatego, że wysyłanie FB resetuje stan wciśnięcia klawisza i za pierwszym razem mi trochę zaspamowało tablicę (100 wpisów...). Zatem upewniamy się, że wpis doda się raz.
Druga funkcja to wysyłanie wpisu do FB. Jest Tytuł, Opis, Wiadomość, Grafika oraz Adres pod który link odsyła. Pozostałe dwa parametry nie są nam potrzebne i są do innych zastosowań (polecam dokumentację...).

B. Wiadomość wpisana przez użytkownika.

Ta wersja nie wymaga ustawień permissions (zatem 4 linijki za facebook_init() w create można wywalić) - użytkownik fizycznie wysyła wiadomość (jakby się dzielił czymś na FB), więc FB nie wymaga żadnych uprawnień:

gml:if sent = false {
sent = true;
var interactiveMap;
interactiveMap = ds_map_create();
ds_map_add(interactiveMap, "picture", "http:// forum.gmclan.org/style_images/8_logo_forum.png");
ds_map_add(interactiveMap, "link", "http:// gmclan.org");
ds_map_add(interactiveMap, "name", "Tytuł");
ds_map_add(interactiveMap, "caption", "Opis");
ds_map_add(interactiveMap, "description", "Długi opis");
facebook_dialog("feed", interactiveMap, -1);
ds_map_destroy(interactiveMap);
}


Kolejny krok - dodanie kodu w Draw.
W draw dodajemy:

gml: if sent= false {
draw_text(10,10,"Dotknij palcem, żeby wysłać wiadomość");
} else {
draw_text(10,10,"A teraz sprawdź swojego facebooka :)");
}

Warto jeszcze dodać jedna rzecz - przypisać game_end(); pod klawisz backspace ;)

W sumie wszystko gotowe. Jedna sprawa - w GM jest jakiś bug, więc zanim zapiszemy plik .APK, należy testowo uruchomić grę (F5) i ją zamknąć, albo zrestartować GM:Studio, jeśli generowaliśmy nowy KEYSTORE (krok 1). Trzeba to zrobić tylko za tym pierwszym razem, a samego keystore nie trzeba generować na nowo dla innej gry - może być taki sam dla każdej ;)

Teraz klikamy "Create Executable". Tam, dam dam! Jeśli plik się stworzy (na co liczę), to odpalamy go i przeniesie nas do facebooka, który zapyta o zgodę na dodawanie postów przez aplikację (jeśli zamiast "Zgadzam się" jest guzi "OK" i nie ma "Anuluj" z lewej strony, to pewnie mamy zły hash - zresztą będzie czerwona ramka, ze źle skonfigurowano aplikację). Zgadzamy się po czym klikamy palcem w ekran. Zgodnie z instrukcją, sprawdzamy naszego Facebooka, a tam...



Gdyby jednak w trakcie tworzenia APK wyskoczył wam błąd (może dotyczyć tego, ze nie znaleziono waszego KEYSTORE w katalogu gm_ttt_XXX), to restartujemy GM, odpalamy naszą grę jako test (F5) i próbujemy na nowo.

Jeśli macie problemy - piszcie w komentarzach, może coś przeoczyłem.

Wkrótce wersja dla iOS - tam jest prościej ;)



P.S. Włączenie trybu piaskownicy (guzik nad ustawieniami androida na stronie Facebooka) ukryje te posty przed znajomymi ;)
głosów: 3 | ocena: 6.99 oceń zasób | dodał: gnysek
Komentarze
stron: 1

1


av

Uzjel (22:03, 14.12.2012)

Kurna, trochę trudne. Może w następnym projekcie x)

av

gnysek (13:19, 19.12.2012)

Poprawiłem kilka błędów oraz dopisałem o drugiej możliwości, gdzie użytkownik dostaje popupa i może sobie wybrać jaki chce opis do linku

av

kriso99 (18:44, 17.04.2014)

Przydało się, dzięki ;-)

av

gnysek (18:48, 17.04.2014)

Szkoda, że FB tak często wszystko zmienia, bo już sporo jest nieaktualne

av

art22pl (21:11, 1.10.2014)

Chyba teraz trzeba wysłać aplikację w celu ustawienia uprawnień , próbowałem to ustawić z poziomu gm ale postów na stronę gł. już nie wstawi tym sposobem . Chyba że po akceptacji . Co najdziwniejsze sposób z php nadal działa więc po co te zmiany na tym fb ...

av

gnysek (10:23, 2.10.2014)

Z runnera to nigdy nie działało. Musi być APK/IAP zbudowane.

av

art22pl (19:51, 2.10.2014)

Dokładnie , tak już jest zbudowany GMS . Dlatego zawsze robię pełną apke na Androida .

stron: 1

1



Dodaj komentarz:
Treść:
Menu
Panel użytkownika
Jesteś niezalogowany!

Nie masz konta? Zarejestruj się
Użytkownicy on-line
1 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 1, userów: 0, ukrytych: 0
Użytkownicy na czacie discord
Adriann (23:15, 16.02.20):
Widzę że trzeba było głośniej rozgłaszać temat jak zacząłem się bawić.. :d
Borek (23:06, 16.02.20):
Kurde... gdybym poznał szybciej GMLive to Almora nie powstawałaby 8 lat tylko 4
Konrad-GM (9:34, 15.02.20):
Godot ma to chyba od dawna, w dodatku działa też na mobilkach bit.ly/2OVpcIi
nowy_user (21:11, 14.02.20):
Godot chyba też nie ma... GMS mógłby zrobić z tego naprawdę mocną przewagę konkurencyjną. Szybsze tworzenie interfejsu to jedna sprawa, ale pracując z GMLive można znacznie szybciej nauczyć się kodzić ( ja dzięki temu szybko zajarzyłem ds_listy, ds_mapy i wszystkie funkcje z nimi związane).
Rakson (18:42, 14.02.20):
chyba jak sobie sam napiszesz, pygame nie ma i pyglet też. jedyne co mi przychodzi na myśl to panda3d
Threef (19:05, 11.02.20):
Chyba wszystkie silniki na Pythonie pozwalają na coś takiego
nowy_user (17:52, 11.02.20):
Aż dziwne, że YoYo nie zaimplementują tego modułu na stałe. To byłaby jedna z nielicznych przewag konkurencyjnych w porównaniu do innych silników. W Unity na żywca można edytować tylko podstawowe parametry oraz ułożenie elementów na scenie.
gnysek (12:15, 11.02.20):
Tak, mocno przyspiesza pracę z GMem, robisz jakiś skrypt, odpalasz grę i na żywca edytujesz. Całe menu sklepu do gry tak napisałem, w 20 minut zamiast w 4-5 godzin. Najlepiej wychodzi zabawa jak musisz przesuwać tekst czy robić ramki dookoła niego, wszystko ładnie sobie przesuniesz na żywca.
nowy_user (17:58, 10.02.20):
Ja i Uzjel kupiliśmy to rozszerzenie i jesteśmy zadowolemni. Gnysek chyba też kupił, bo udziela się na forum YellowAfterlife (nick gościa, który to zrobił) i zgłasza mu bugi.
nowy_user (17:56, 10.02.20):
btw. koleś od gmlive.js zrobił też GMLive, który implementujesz sobie do GMa i możesz modyfikować niektóre fragmenty kodu po kompliacji i włączeniu gry. Mega pomocne, zwłaszcza gdy projekt się rozrasta.
gnysek (13:13, 10.02.20):
Możliwość pisania kodu GML w przeglądarce.
LolikZabójca2 (7:39, 10.02.20):
co ot jest gmlive.js?
I am Lord (0:16, 10.02.20):
tiny.pl/t69tv
I am Lord (0:15, 10.02.20):
Moja gierka zrobiona w GMlive.js yal.cc/r/gml/?m...CkzHYvZBeS8kHEs
gnysek (22:32, 3.02.20):
Bardzo możliwe, że na razie to placeholdery, ale chyba nie dali ich bez powodu ?
I am Lord (18:40, 3.02.20):
a co jak to puste wydmuszki?
gnysek (18:11, 3.02.20):
Taaaa Jak psyś się dorwie do tego, to może przerobi IDE tak, zeby te DLLki też odpalić
I am Lord (17:31, 3.02.20):
Takie "trochę" że nawet wiemy nad czym pracują w ukryciu a nie zapowiadali tego nigdzie
gnysek (10:15, 3.02.20):
Nie jest, czekamy na otwartą bętę, ale mi się udało trochę info pozyskać
I am Lord (16:32, 1.02.20):
żeby tylko siusiaki
I am Lord (16:32, 1.02.20):
potwierdzam, strumyk był gruby
SimianVirus7 (11:59, 1.02.20):
a to ten cały gm:s2 2.3 już jest dostępny?
gnysek (2:07, 1.02.20):
Game Maker wyszedł z Unii
Uzjel (16:51, 31.01.20):
Nie, ale humor podobny jak poniżej :p
gnysek (16:27, 31.01.20):
No dajcie spokoj
Chell (14:06, 31.01.20):
siusiaki?
Nikas (14:04, 31.01.20):
siusiaki?
gnysek (23:39, 30.01.20):
Kto nie był dziś na disco zrąbał, pokazywaliśmy takie rzeczy że hoho
gnysek (13:09, 30.01.20):
Nawet na Disco.
gnysek (13:09, 30.01.20):
A przecież można napisać do mnie
LolikZabójca2 (16:26, 29.01.20):
Bo zapomniałem hasła, próbowanie różnych to blokada na 30 minut, a w przypomnij hasło jest tylko opcja wpisania emaila. Emaila na który założyłem konto też nie pamiętam haha
gnysek (16:15, 29.01.20):
Właśnie
Konrad-GM (22:19, 28.01.20):
Ta btw co to za multikonto
LolikZabójca2 (21:23, 28.01.20):
oznacza utratę danych. Wiem, że można dodać opcję eksportu i importu, albo instrukcję jak save przerzucić, ale wiesz. Użytkownicy telefonów to często nie są zbyt ogarnięci informatycznie ludzie, a gra nie powinna powodować uczucia frustracji nawet u takich osób. Szczególnie jeśli planuję zarabiać na mikropłatnościach które pomagają się rozwijać na danym save'ie.
LolikZabójca2 (21:22, 28.01.20):
No tak sądziłem, żeby zrobić liczbę która określa jakby ile razy już przekroczyliśmy tą granicę int32. Ale z drugiej strony - kto będzie szedł w linii prostej ponad 100dni(po 24h licząc) bez przerwy i bez zatrzymywania się i jeszcze narzekał na mały świat(a licząc w obie to ponad 200 dni wzdłuż). Drugi problem to fakt, że tak duży świat to byłby i tak ogromny save powierzchniowo jak na mobilki. Tym bardziej, że chciałbym trzymać dane w chmurze, żeby ludzie nie irytow
gnysek (16:35, 28.01.20):
to nie można jako strefa+pozycja ? mocno się zmniejszają liczby wtedy
Konrad-GM (15:06, 28.01.20):
To zależy, w GMie zmienne z tego co pamiętam to 64 bitowe floating pointy, teoretycznie maksymalna wartość to 1.8*10^308 dla obu znaków, ale precyzja mocno kuleje przy takich liczbach, "bezpiecznie" jest integery trzymać do 2^53 dla obu znaków, ofc. nie biorę pod uwagę innych platform poza PC, bo precyzja może być zupełnie inna na mobile i konsolach
LolikZabójca2 (22:54, 27.01.20):
na to wygląda. Badam grunt pod grę z otwartym światem, czy mogę polegać na x i y czy muszę je zwielokrotniać dla podania lokalizacji obiektów w grze. Ale licząc od -(2^32) do 2^32 to przy obecnych założeniach poruszając się w mojej grze konno(najszybszy środek transportu) to przemierzenie gry od min x do ma x to ponad 200 dni(prawdziwych) jazdy bez przerwy więc chyba nie powinno być problemu z tym.
LolikZabójca2 (22:48, 27.01.20):
w gms 1.4? Czy to 2^32(4294967296)?
LolikZabójca2 (22:46, 27.01.20):
Jaka może być maksymalna wartość x i y?
gnysek (12:48, 27.01.20):
Jak znasz dobrze GM - to tak, bo zupełnie inny
Sutikku (22:19, 26.01.20):
nie ma już darmowej wersji game maker, tylko trial na 30 dni? Ciężki ten Godot?
Threef (10:27, 26.01.20):
Zawsze najszybciej pobrać z changeloga który jest online
LolikZabójca2 (17:52, 24.01.20):
Dobra jednak mam download tylko schowali go xd
LolikZabójca2 (17:51, 24.01.20):
Lol gdzie zniknął na yoyogames przycisk pobierania 1.4? Kupiłem dożywotnia lickę a oni usuneli oficialny download? Ma ktoś instalkę może?
LolikZabójca2 (17:50, 24.01.20):
A jak działa licencja GameMaker Studio 2 Creator Windows i GameMaker Studio 2 Creator Mac?
gnysek (17:17, 24.01.20):
Nie można. Jest to opisane w helpdesku YYG.
LolikZabójca (13:06, 24.01.20):
Usługi*
LolikZabójca (13:06, 24.01.20):
Czy można skorzystać z funkcji Max on Cloud?
Threef (9:10, 24.01.20):
Każdy silnik wymaga bo trzeba podpisać build kluczem cyfrowym który tylko mac generuje
Ankieta
» Ile powinny trwać tury Ligi 24?
24h
48h
54h (piątek od 18:00)
7 dni
inna długość (podałem w komentarzu ankiety)

GMCLAN to serwis o programie Game Maker i nie tylko.
[ Polityka prywatności ]
Copyright © 2002-2020. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!
© 2002-2017 Ranmus (ranmus.pl), © 2017-2020 {=|=} fable_inside();

[ Czas generowania strony: 0.01989 sekund ] [ Liczba zapytań MySQL: 13 ]