Widziałem wiele projektów, które pokazują, jak zaimplementować logowanie w MVP, ale nie mogę znaleźć niczego związanego z logowaniem się do Google/Facebooka.Jak postępować zgodnie z architekturą MVP z pakietami SDK innych firm?
Co należy zrobić w przypadku, gdy przepływ logowania jest ściśle związany z cyklem życia komponentów systemu Android? Widzę główną zaletę MVP w tym, że tworzymy abstrakcję powyżej Context
, ale ta abstrakcja okaże się zbyt skomplikowana, gdy będziemy musieli podążać, na przykład, przepływ danych z Facebooka: musisz zarejestrować FacebookCallback
z CallbackManager
, zadzwonić pod numer logInWithReadPermissions()
(przekazanie aktywności/Fragment do tego), delegować onActivityResult()
do callbackManager
i to spowoduje uruchomienie metod Facebooka.
Co mam na uwadze to, aby stworzyć coś podobnego
interface AuthInteractor {
void doFacebookLogin();
void doGoogleLogin();
}
którego realizacja będzie wiedział o kontekst i zainicjować GoogleApiClient
. Zostanie on wstrzyknięty w Presenter, ale co z tymi wszystkimi callbackami (szczególnie w SDK Facebooka) sprawy staną się zbyt skomplikowane. Czy w takich przypadkach lepiej nie pomijać MVP?
Nie tak pewien swojej pytanie, ale ja nie zgadzam się z interfejsem, IMHO utworzyłbym klasę FacebookLogin i GoogleLogin, która implementuje ten sam interfejs i abstrahuje szczegółowość każdego przepływu logowania. – jonathanrz
@jonathanrz Tak, zrobiłem to samo w moich poprzednich projektach i zamierzam ponownie użyć tego kodu, dwóch menedżerów może być członkami AuthInteractorImpl. Ale naprawdę nie lubię takiej architektury i lepiej napisać to bez MVP – Yaroslav
, ponieważ przepływ uwierzytelniania powinien pozostać w kontrolerze, nie widzę powodu, dla którego łamie wzór MVP. – jonathanrz