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
Kategorie bazy artykułów
Artykuły -> Felietony
Treść artykułu
Facebook - posty na wallu / Android
autor: gnysek (14.12.12)
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
71 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 70, userów: 1, ukrytych: 0
Dester

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
Wojo (5:52, 18.01.17):
Skoro odpisujesz to jednak cię rusza, a ta bezsilność
ΨΧΞ (21:39, 17.01.17):
patrz, jak się przejąłem xD
Wojo (18:04, 17.01.17):
a raczej BYŁEGO admina hehe
Wojo (18:03, 17.01.17):
Nie ma to jak dostać nagrodę za obrazę admina xD
I am vader (17:44, 17.01.17):
:v
I am vader (17:44, 17.01.17):
Czemu nie mogło być tak pięknej świecącej błyszczącej rangi rok temu jak usera roku dostałem
gnysek (10:05, 17.01.17):
Ale zajebiście mi wyszedł skrypt parsujący tekst gmclan.org/uplo...log_parsing.png
Threef (18:25, 15.01.17):
No to wygląda jakby twoje "mouse" miało duplikat nazwy.
Ignatus (17:52, 15.01.17):
Threef-juz znalazlem o co chodzi ale logiki tu nie ma.Krzaczyl kod if mouse.x!=mouse.xprevious" po usunieciu tego wszystko dziala.Problem polega ze jedyne co zmienialem to podmienialem grafiki, w ogole kodu nie ruszalem i nagle zaczelo swirowac
I am vader (16:24, 15.01.17):
W warnlogu masz ze to za ten link
Nikas (12:23, 15.01.17):
Ej no serio to za ten obrazek i link do nakidmag? Lel
gnysek (12:05, 15.01.17):
polecam screeny i trailery na almora.pl
gnysek (12:05, 15.01.17):
@Wojo: ale nikt o online nie mówi, a na androidzie masz całkiem niezłą Almorę, a następny update pobije wszystko co do tej pory było
Threef (11:02, 15.01.17):
Ignatus cache wyczyszczony? Obiekt w Room jest?
Adriann (22:58, 14.01.17):
aww to: i.imgur.com/mT8i8.gif
I am vader (22:25, 14.01.17):
O KURCZE DZISIAJ ROCZNICA MOJEJ SYGNATURY
Ignatus (22:12, 14.01.17):
Jest kod do wykonania jak w pysk strzelil-nie robi i koniec.Identyczny obiekt z identycznym kodem ale sprzed 4 dni dziala.Magia
Ignatus (22:03, 14.01.17):
Mieliscie kiedys taka zawieche GM ze przestal wykonywac kod?Wlasnie to przerabiam.Cos pieknego,4 dni w plecy
MaxGaming (20:36, 14.01.17):
To jest ten przypadek gdy użytkowników jest tak mało że moderatorzy już z nudów wykazują się nadgorliwością no i żeby ich nikt nie oskarżył że nic nie robią ale wszyscy chyba wiemy że ten ban był bez sensu xd
I am vader (17:52, 14.01.17):
Niby za 18+ Ale ja tam gora widze 16+ bo jedyne widoczne piersi sa bardziej plaskie od powierzchni lustra
Ignatus (15:11, 14.01.17):
Za co to zgraniasz Nikas?
Gibki Kaktus (14:40, 14.01.17):
A ja za 4h mam studniówkę....
Gibki Kaktus (14:37, 14.01.17):
Nie wiedziałem, że Nikas ma bana xD
Wojo (13:41, 14.01.17):
co za społeczniaki, nie dość,że forum martwe do ubijacie aktywnych userów
Nikas (13:03, 14.01.17):
No elo wracam po krótkim banie, wskoczyły mi dwa kolejne warny. Czuję dobrze niekwestionowany zwycięzca jesli chodzi o warnlog. xD
Wojo (23:39, 13.01.17):
No i szczerze niewiele osób będzie w nią grało jeśli ktokolwiek, na urządzeniach mobilnych osiągnęłaby sukces jakby była zajebiście pod nie przystosowaną mechaniką. Ale i tak szacun za pisanie czegokolwiek
I am vader (23:38, 13.01.17):
Strasznie mało głosów w CA jak na ilość osób podrzucającą nominacje
Wojo (23:38, 13.01.17):
Jak w almore przecież nikt nie gra a co dopiero myśleć o moderach
I am Lord (19:40, 13.01.17):
moderzy by takie coś wykorzystali
gnysek (16:15, 13.01.17):
W sumie, tak bardzo na siłę, to dałoby się dociągać questy z sieci przy tym systemie. Ale po co.
gnysek (16:14, 13.01.17):
Ach, właśnie kończę system scenariuszy do Almory. Teraz muszę go "upłnnić", animacje itd. Ale ogólnie działa zajebiście, szkoda, że 7 lat temu na to nie wpadłem
Korodzik (14:53, 13.01.17):
jeśli to jeszcze aktualne 34 godziny później
Korodzik (14:53, 13.01.17):
MaxGaming: pokaż, może ja dam radę
Chell (0:32, 13.01.17):
o, i AC1 za dolca
Danielus (21:05, 12.01.17):
kupiłem sobie bundla ostatnio jak spriter był i teraz unity wypuściło Anima2D : <
Fervi  (20:34, 12.01.17):
Kolejny Dirt (Showdown)
MaxGaming (4:19, 12.01.17):
Jestem kompletnym beztalenciem jeżeli chodzi o matmę. Pomógłby mi ktoś rozwiazać dwa przykłady(uczę się równań kwadratowych i tych dwóch przykładów nie rozumiem a muszę to umieć, a w necie nie ma)?
Sutikku (17:58, 11.01.17):
nie mówię, że w 2h ułożyliśmy c;
Threef (17:18, 11.01.17):
Ja wiedziałem.
gnysek (16:33, 11.01.17):
Wiedzieliście, że obj.sprite_width == image_get_width(sprite_index)*image_xscale; ??
Korodzik (11:37, 11.01.17):
zupełnie nie pamiętałem tego gościa, niemal lepszy 'profesjonalista' niż paqoo forum.gmclan.or...p?showuser=6905
Korodzik (11:36, 11.01.17):
Wow, stare tematy na gmclanie to kopalnia zabawnych topiców
gnysek (9:41, 11.01.17):
I tylko 2h? Niemożliwe.
Sutikku (20:45, 9.01.17):
ale co, ile puzzli? 1000
Ignatus (11:52, 9.01.17):
pewnie 32
PatrykPlayingPOLSKA (17:53, 8.01.17):
Ile części ?
Sutikku (17:49, 8.01.17):
tylko te gierki wam w głowie, ja właśnie układałem 2h puzzle z babcią, polecam xd
I am vader (17:12, 8.01.17):
Ja osobiście bardzo lubie 4'kę.
Ankieta
» Czy jesteś szczery odpowiadając w ankietach w Internecie?
Tak
Nie

GMCLAN to serwis o programie Game Maker i nie tylko.
Copyright © 2002-2017. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!

[ Czas generowania strony: 0.00757 sekund ] [ Liczba zapytań MySQL: 16 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev