Niby autentykacja przy pomocy OAuth2 jest prosta, ale do niedawna robienie jej w Androidzie było straszne.
Do czasu ;-) do czasu gdy pojawiło się Google Play Services.
Właśnie się nimi bawię, docelowo chcę mieć w Bloggeroidzie autoryzację przy pomocy właśnie Google Play Services.
Oczywiście po drodze wychodzą pewne niedogodności, np. najłatwiej jest mi sterować przepływem używając wait i notifyAll ;-)
Jeśli GoogleAuthUtil (część Google Play Services) zwróci mi null jako tokena, albo poleci wyjątek to wtedy mam tak, że synchronizuję się na aktywności czy też Application i robię wait.... a GoogleAuthUtil albo wysyła intenta na którego zarejestrowany jest mój BroadcastReceiver, który po prostu robi notifyAll (uprzednio się synchronizując), w innym przypadku jest to notifyAll wołane z onActivityResult().
Wiem, że brzydko, świadczy o tym to, że same te metody nie mają wersji blokujących i sam sobie je muszę pisać ;-) ale takie podejście ma pewne zalety, mimo wszystko kod jest prostszy.
Oczywiście Bloggeroid jest używany też na urządzeniach, które nie mają Google Play (np. na emulatorze gdy testuję ;-)) a tam nie ma też Google Play Services dlatego pozostanie w kodzie nadal aktywność do wpisywania nazwy konta i hasła.
To zresztą generuje problemy... bo userów chciałbym przerzucić na nowy system a do tego będę musiał ich jakoś niezbyt natrętnie poprosić o zgodę...
Do czasu ;-) do czasu gdy pojawiło się Google Play Services.
Właśnie się nimi bawię, docelowo chcę mieć w Bloggeroidzie autoryzację przy pomocy właśnie Google Play Services.
Oczywiście po drodze wychodzą pewne niedogodności, np. najłatwiej jest mi sterować przepływem używając wait i notifyAll ;-)
Jeśli GoogleAuthUtil (część Google Play Services) zwróci mi null jako tokena, albo poleci wyjątek to wtedy mam tak, że synchronizuję się na aktywności czy też Application i robię wait.... a GoogleAuthUtil albo wysyła intenta na którego zarejestrowany jest mój BroadcastReceiver, który po prostu robi notifyAll (uprzednio się synchronizując), w innym przypadku jest to notifyAll wołane z onActivityResult().
Wiem, że brzydko, świadczy o tym to, że same te metody nie mają wersji blokujących i sam sobie je muszę pisać ;-) ale takie podejście ma pewne zalety, mimo wszystko kod jest prostszy.
Oczywiście Bloggeroid jest używany też na urządzeniach, które nie mają Google Play (np. na emulatorze gdy testuję ;-)) a tam nie ma też Google Play Services dlatego pozostanie w kodzie nadal aktywność do wpisywania nazwy konta i hasła.
To zresztą generuje problemy... bo userów chciałbym przerzucić na nowy system a do tego będę musiał ich jakoś niezbyt natrętnie poprosić o zgodę...
posted from Bloggeroid
Podobne postybeta
Papa dla ClientLogin
Programowanie trudne ;-)
Czemu wait() i notify()/notifyAll() w ogóle działają?
Marudzenie nocne ;-)
I jak "po bożemu" zrobić updatowanie widoku na podstawie danych z sieci w Androidzie?
Brak komentarzy:
Prześlij komentarz