Я создал приложение для Android, у которого есть ящик навигации с фрагментами.
Затем я начал с Social Media Integrations, то есть Facebook, Twitter и Google Plus. Я использую официальные соответствующие SDK.
Not Social Media Сессии и вызовы для получения данных производятся в следующих действиях:
-
Mainactivity
: Если какая-либо из сеансов потеряна или отменена, ей необходимо перенаправить наLoginActivity
. Это делается во время жизненных циклов работы. -
LoginActivity
: Если разрешение предоставлено и перенаправлено на Main после успеха -
NavigationDrawerFragment
: Ящик навигации, я использую это для отображения образа, имени и адреса электронной почты пользователя.
В этих трех классах я вызываю соответствующие методы SDK и управляю сессиями, поэтому существует много дубликатов кода.
Также 3 SDK имеют значительно разные способы обеспечения аутентификации.
- Facebook: использует
UiLifeCycleHelper
, который реализован на всех ваших стандартных функциях жизненного цикла активности. - Google Plus: вы должны реализовать
GooglePlay
обратные вызовы хранилища в действии и создатьGoogleApiClient
для всех действий. - Twitter: имеет меньшее отношение "захватить ваше приложение" и использует модификацию в том же порядке, что и обычный вызов REST API на Android: с Retrofit, Однако вы должны предоставить разрешения для каждого входа.
Таким образом, все эти функции для обработки различных учетных записей социальных сетей включены во все необходимые действия, делая код приложения действительно громоздким и трудно управляемым.
Есть ли у вас какие-либо предложения о том, как абстрагировать эти методы auth в легко поддерживаемых решениях, облегчающих сеансы манипуляции? Будет ли я лучше иметь отдельные действия на основе того, какой логин был использован?