3.2 VYou – API

API

Cada método público dentro del SDK devuelve un VYouResult que básicamente es una envoltura del resultado de una acción. Esto está representado por una clase sellada cuyos posibles valores son

  • VYouResult.Successódigo> que contiene un value: T con el resultado de la acción
  • VYouResult.Failure que contiene un error: Throwable con el motivo del fallo

El SDK de VYou-Core se divide en tres componentes principales que permiten a los desarrolladores interactuar con el SDK en función de sus necesidades, que son las siguientes

  • VYouLoginManager Este componente permite interactuar con las tres posibles plataformas de login que proporciona el SDK. La API para ello es la siguiente suspender fun signInWithAuth(): VyouResult<VyouSession> suspender fun signInWithGoogle(): VyouResult<VyouSession> suspender fun signInWithFacebook(fragment: Fragment): VyouResult<VyouSession> Estos tres métodos iniciarán una nueva Actividad dentro de tu aplicación, recogerán la información necesaria del usuario, realizarán una petición a la API del backend de VYou y devolverán el resultado adecuado dentro del objeto VYouSession. Para poder interactuar con el VYouLoginManager, es obligatorio pasar un ActivityResultCaller como parámetro desde tu aplicación. fun getLogin(actResultCaller: ActivityResultCaller) = VYouLoginManager(actResultCaller) El activityResultCaller puede ser una actividad o un fragmento, esta clase puede llamar a APIs de tipo Activity#startActivityForResult sin tener que gestionar los códigos de petición, y convirtiendo la petición/respuesta a un Intent. Es necesario llamar a esta función antes del onCreate de tu Activity o Fragment. Puedes hacerlo así: private val vyouLogin = VYou.getLogin(this) Por último, pero no menos importante, si estás usando Facebook para autenticar a tus usuarios, necesitas anular override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent? ) en el Fragmento o Actividad que está llamando al método signInWithFacebook(...) y llamar a VyouLoginManager.onActivityResult(requestCode, resultCode, data) en su interior.
  • VYouTenantManager Este gestor permite al desarrollador interactuar con toda la API que no requiere que el usuario esté autenticado. Esos métodos son el de obtener la información del Tenant y el de registrar un nuevo usuario en la plataforma suspender fun tenant(): VYouResult<VYouTenant> suspender fun register(customer: RegisterDto): VYouResult<Unit> Cualquiera de esos dos métodos realizará una petición a la API y devolverá el resultado adecuado envuelto dentro de un objeto VYouResult.
  • VYouSession El último de los componentes dentro del VYou-Core SDK es la sesión. Esta sesión es accesible de forma estática a través del val session: VYouSession? dentro del objeto VYou. Como te habrás dado cuenta, esta es una propiedad anulable que sólo tendrá un valor si el usuario se ha autenticado previamente en tu aplicación. Todos estos datos de sesión se almacenan dentro de EncryptedSharedPreferences de Android, por lo que todos estos datos están debidamente asegurados por el sistema operativo. La clase VYouSession contiene las credenciales del usuario (VYouCredentials) que son accesibles para el desarrollador en caso de que las necesite. También contiene los métodos necesarios para interactuar con un usuario conectado, que son los siguientes: suspender la diversión signOut(): VYouResult<Unit> suspender fun tenantProfile(): VYouResult<VYouProfile> suspender fun editProfile(editProfileDto: EditProfileDto): VYouResult<Unit>
  • HttpClient Este SDK también te proporciona un OkHttpClient con la configuración adecuada para que puedas realizar peticiones autenticadas con cualquier servidor que lo necesite. Este cliente tiene tres interceptores que se encargan de añadir la cabecera Client-Credentials que autentifica tu aplicación frente a los servidores de VYou, añadir la cabecera Authorization, que autentifica a tu usuario si ha iniciado sesión, y refrescar el token del usuario si está caducado o no es válido. Este cliente es accesible a través de una propiedad estática val httpClient: OkHttpClient dentro del objeto VYou.
  • CredentialsStorage VYou proporciona un almacenamiento integrado para las credenciales basado en EncryptedSharedPreferences proporcionado por el SO. Puede darse el caso de que esta solución no se ajuste a los requisitos de seguridad de tu aplicación. Si ese es el caso, proporcionamos una API para que puedas instalar tu propio sistema CredentialsStorage para reemplazar el que proporcionamos. Para ello, proporcionamos un ejemplo con un almacenamiento InMemory. clase InMemoryCredentialsStorage: CredentialsStorage { private var credentials: VYouCredentials? = null override fun save(credentials: VYouCredentials) { this.credentials = credentials } override fun read(): VYouCredentials? = credenciales override fun clear() { credenciales = null } } Fíjate en que necesitas implementar la interfaz CredentialsStorage Una vez hecho esto, necesitas anular el almacenamiento dentro de VYou. Para ello, como estamos utilizando Koin para la inyección de dependencias, esto es bastante sencillo. Debes crear un módulo que proporcione tu implementación de CredentialsStorage y anule la nuestra, esto se declara de la siguiente manera. val credentialsModule = module { single<CredentialsStorage>(override = true) { InMemoryCredentialsStorage() } } Lo último que debes hacer es pasar una lista que contenga este módulo cuando inicialices el SDK: VYou.initialize(this, listOf(credentialsModule)) Todo este código está disponible para que lo pruebes dentro de la app de ejemplo que te proporcionamos.
Ir arriba