MobileSecondHand – pierwsze widoki i funkcjonalności związane z autentykacją.

Siemanko.

Niedzielny wieczór więc pora skończyć kodzenie na dziś i naklepać trochę tekstu, którego nie da się skompilować 😉

Dziś trochę o starcie aplikacji i związanymi z tym faktem działaniami. Na zdjęciu wyżej widać ekran startowy. Prosty widok fullscreen z polem tekstowym i spinnerem, który ma dla bajeru pokazywać, że coś się w tle dzieje 🙂 Jako, że założenia aplikacji nie uwzględniają użytkowników anonimowych (żeby coś wystawić, lub żeby się skontaktować z właścicielem ogłoszenia to i tak trzeba będzie mieć konto) dlatego na dzień dobry po uruchomieni apki sprawdzam czy user jest zalogowany.

1

Autentykacja bazuje na tokenie, dlatego :

  • sprawdzam czy aplikacja ma zapisane w czymś co się nazywa SharedPreferences (to jest jakieś miejsce w pamięci przydzielone przez Android dla każdej z aplikacji – a przynajmniej tak mi się wydaje :)). Jest to kolekcja elementów klucz – wartość, czyli słownik. Jeśli wartość wyciągnięta z tego słownika jest różna od nulla tzn., że coś tu było działane i user może być zalogowany, ale token może być już przeterminowany dlatego uderzam na serwer.
  • jeśli nie ma w SharedPreferences tokena tzn., że jest to pierwsze uruchomienie apki po zainstalowaniu. MobileSecondHand – jak każda szanująca się apka 😉 – umożliwia zalogowanie przez facebook’a. Do tego wykorzystałem po stronie androida gotową biblioteczkę przygotowaną oczywiście przez facebook’a. Sprawdzam czy user logował się już do apki przez fejsa co sprowadza się do poproszenia o AccesToken. Jeśli jest różny od nulla to idzie na serwer i tam dokonuje się cała robota, a zwracany jest świeżutki bearer tokenik, który ląduje we wcześniej wspomnianych SharedPreferences . Jeśli jest nullem to ręcznie zwracam status 401 do activity, w którym wszystko się zaczęło, co jest informacją, że user musi się zalogować.2

WP_20160313_17_14_17_Pro

Wyżej widok logowania. Jak widać można to zrobić dwojako. Loginem i hasłem lub przez facebook’a. Jeśli standardowo to po prostu na serwer idzie POSTem model do logowania (już za chwilę opiszę jak obsługuje komunikację z serwerem). Jeśli user nie ma jeszcze konta i nie ma też facebook’a, może przejść do prostego widoku rejestracji.

WP_20160313_17_15_23_Pro

Tutaj to samo. Wypełnić, kliknąć i idzie model na serwer, a wraca token autentykacji.

Jeśli jednak w sytuacji gdy user nie ma konta, ale ma facebook’a i chce się przez niego lognąć (co jest jak wszyscy wiemy bardzo wygodne na mobilnych urządzeniach) to wystarczy, że kliknie na button, który jest także przygotowany przez facebook’a. Obsłużenie logowanie przez fejsa sprowadza się do zaimplementowania callbacka do buttona logowania z facebook’iem.

3.png

Resztę wykona za nas kod z biblioteczki facebooka.

WP_20160313_17_15_45_Pro

Jeśli wszystko pójdzie ok to mamy token od facebooka, który ja wysyłam na serwer i rejestruje/loguje usera oraz zwracam mój token autentykacji.

Android Asynchronous Http Client

Jako, ze na głównym wątku jedzie UI, do wykonywania czasochłonnych operacji trzeba tworzyć i wykorzystywać inne wątki. Niewątpliwie takimi operacjami są requesty do serwera. Znalazłem do tego świetną bibliotekę (tutaj). Jest bardzo prosta w użyciu dzięki dobrej dokumentacji. Wysłanie requesta sprowadza się do podania urla, i danych oraz obsłużenia zdarzeń po skończonym requeście.

4

Trzeba tylko mieć na uwadze to, że onFailure() nie będzie wywołane tylko wtedy gdy z serwera dostaniemy błąd. onFailure()  jest wywoływane gdy nie uda się odpowiedzi przerobić na obiekt JSON (w przypadku widocznym na zdjęciu, ale biblioteka umożliwia castowanie na wiele innych typów) choć status odpowiedzi może być 200.

GSON

GSON to biblioteczka to konwertowania obiektów Javovych na obiekty JSON oraz w druga stronę. Tutaj jest do niej link. Wystarczy podać typ obiektu, na który chcemy przerobić JSONa, lub wywołać toJson() jeśli chcemy obiekt Javovy przerobić na JSONa

56

Podsumowanie

Od autentykacji zacząłem projekt, także już kilkanaście albo nawet więcej godzin przy tym spędziłem. Mam na myśli oczywiście część androidową. Wygląd apki jak na razie jest prosty, bez fajerwerków. Skupiam się na funkcjonalnościach, a wygląd zostawię na koniec. W środę opiszę autentykację po stronie Asp.Net.

Pjona!

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s