Estreno otra sección, en este caso estará centrado en problemas que me he ido encontrado con los servicios Cloud a la hora de desarrollar alguna aplicación nativa para Android o IOS.
En este caso le toca el turno a Azure, por ciertas necesidades he tenido que "pegarme" con el servicio para que me funcionara el Login con el servicio de Azure Active Directory.
Vuelve a ser por el problema de la documentación existente, que creo que es el único problema con los servicios Cloud, que la documentación o no esta clara o no esta actualizada.
Este escenario es muy simple, queremos hacer login, con una app Android, usando usuarios pertenecientes a Azure Active Directory, en un principio debería ser bastante fácil pero por lo menos en mi caso he tenido algún que otro problema.
Primero de todo:
Configurar el AppService para el login
Teóricamente bastante sencillo, vamos a la doc oficial:
Configure AAD in APPService
Y la seguimos, como tal hacemos todo y pensamos que todo esta bien, pero a la hora de probarlo falta alguna cosilla, que os voy adelantando por aqui:
Como véis en la foto en las redirecciones URL permitidas necesitamos añadirle algo similar a lo que veis en la foto, básicamente es el nombre de tu appservice seguido de un extra:
appservicename://easyauth.callback
Esto es importante, lo que pongamos aqui lo tendremos que poner tambien en nuestra aplicación en algún momento, en el caso de Android, lo haremos en el manifest.
Siguiente:
Encontrar el SDK
Bueno esto realmente depende de que queramos hacer y de como tengamos montado el entorno en Azure, en mi caso he creado un Mobile AppService, por lo que en condiciones normales deberíamos trabajar con el SDK para ello.
Bien pues en este caso deberia ser bastante fácil, la documentación oficial esta bastante bien para esto:
Azure SDK Android
Como veis al inicio te lo dice, básicamente usa el compile pertinente y un par de cosas más y listo.
Y por último:
Código necesario para el login
Bien seguramente si habeis mirado los links que he puesto más arriba habréis visto que casi todo el código que necesitamos ya estaba, concretamente en este Azure SDK Android
Creamos una conexión de cliente en el onCreate:
MobileServiceClient mClient = new MobileServiceClient(
"<MobileAppUrl>", // Replace with the Site URL
this); // Your application Context
Por si no lo tenéis claro MobileAppUrl es la url de vuestro APPService algo similar a:
https://nombreDeApp.azurewebsites.net
El resto es como viene en la documentación, pero en nuestro caso como provider de login de backend ponemos aad o podemos usar:
MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory
Un par de detalles muy importantes:
- siempre que en la documentación pone algo de url_scheme se refiere a la url de nuestra app o al menos al nombre.
- Tenemos que tener esto en el manifest.xml (con la URL de nuestra app)
<activity android:name="com.microsoft.windowsazure.mobileservices.authentication.RedirectUrlActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="nombreDeApp" android:host="easyauth.callback"/>
</intent-filter>
</activity>
OJO con ese easyauth.callback es el que permitimos más arriba en las redirecciones y sin el nada funciona.
Como tal solo he remarcado las partes que me han parecido más importantes, la gran mayoria de las cosas funcionan bien siguiendo la información que aparece en los links que os he comentado más arriba.
En otro post comentare como obtener datos del usuario que ha realizado el login, ya que a simple vista no es muy intuitivo, hasta la próximaaaaaa.

