{"id":1455,"date":"2014-12-17T11:30:07","date_gmt":"2014-12-17T10:30:07","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1455"},"modified":"2014-12-17T11:30:07","modified_gmt":"2014-12-17T10:30:07","slug":"como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/","title":{"rendered":"Como utilizar las API\u2019s de Office 365 en aplicaciones m\u00f3viles multiplataformas desarrolladas con Xamarin"},"content":{"rendered":"<p><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1456\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss.png\" alt=\"LogoCompartimoss\" width=\"392\" height=\"147\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss.png 392w, https:\/\/encaminablogs.wpenginepowered.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss-300x112.png 300w\" sizes=\"auto, (max-width: 392px) 100vw, 392px\" \/><\/a>Como cada tres meses, se ha publicado un nuevo n\u00famero de la revista de habla hispana <a href=\"http:\/\/www.compartimos.com\" target=\"_blank\">CompartiMOSS<\/a>. En esta ocasi\u00f3n he tenido la fortuna de colaborar escribiendo un art\u00edculo sobre utilizaci\u00f3n de las API&#8217;s de Office 365 en dispostivos m\u00f3viles. Estas API&#8217;s se pueden utilizar tanto utilizando Apache Cordova como Xamarin. En este art\u00edculo he utilizado la opci\u00f3n de Xamarin, para ver que pros\/contras tiene esta opci\u00f3n.<br \/>\nAparte de este art\u00edculo, como en cada n\u00famero de la revista hay muchos art\u00edculos de una calidad innegable. En este n\u00famero hay muchos art\u00edculos escritos por compa\u00f1eros de <a href=\"http:\/\/www.encamina.com\">Encamina<\/a> y que son de obligada lectura:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-22\/introduccion-machine-learning-office-graph-delve-clutter\" target=\"_blank\">Una introducci\u00f3n a Machine Learning, Office Graph, Delve y Clutter<\/a>\u00a0por Javier Men\u00e9ndez<\/li>\n<li><a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-22\/replicacion-granjas-sharepoint-logshipping\" target=\"_blank\">Replicaci\u00f3n de granjas de SharePoint v\u00eda LogShipping<\/a> por Fabi\u00e1n Calvo<\/li>\n<li><a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-22\/la-nube-de-sharepoint-on-premises\" target=\"_blank\">La nube de SharePoint On-Premises <\/a>por Alberto D\u00edaz<\/li>\n<\/ul>\n<p>Adem\u00e1s de estos art\u00edculos tambi\u00e9n hay una seria de art\u00edculos que no deber\u00edas dejar de leerlos como:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-22\/las-aplicaciones-high-trust-i\" target=\"_blank\">Las Aplicaci\u00f3n High-Trust<\/a> escrito por Edin Kapic<\/li>\n<li><a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-22\/rest-webapi-2-sharepoint-2013-introduccion\" target=\"_blank\">REST, WebAPI 2 y SharePoint 2013<\/a> escrito por Gustavo Velez<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p><a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\" target=\"_blank\"><strong>Art\u00edculo publicado en el n\u00famero 22 de CompartiMOSS<\/strong><\/a><\/p>\n<p>Si echamos la vista al evento Connect() de Microsoft (evento en el que se present\u00f3 la nueva versi\u00f3n de Visual Studio) hay dos grandes novedades en cuanto a desarrollo. La primera las mejoras incluidas en Visual Studio para realizar aplicaciones multiplataforma ya sea a trav\u00e9s de Apache Cordova (HTML5, JavaScript y CSS3) o bien a trav\u00e9s de Xamarin (realizando aplicaciones nativas haciendo uso de C#\/F#). La segunda de las novedades es tener preparados nuestros desarrollos para que sean f\u00e1cilmente escalables.<\/p>\n<p>Dada estas dos premisas dentro de nuestro entorno diario est\u00e1 claro donde m\u00e1s nos repercute: Office365. Cada vez salen muchas m\u00e1s novedades para Office365 que no disponemos directamente en nuestra versi\u00f3n OnPremise. Novedades como el App Launcher, Office Delve, Office Video, Office365 API&#8217;s etc&#8230; Por lo que m\u00e1s pronto que tarde tendremos que pensar en la forma en la que podemos utilizar todas estas novedades en nuestros desarrollos.<\/p>\n<p>Partiendo de estas cuestiones, en este art\u00edculo vamos a ver como poder realizar aplicaciones multiplataforma haciendo uso de Xamarin y que consuman los servicios que nos facilita Office 365.<\/p>\n<p><strong>\u00bfQu\u00e9 es Xamarin?<\/strong><\/p>\n<p>Xamarin es una herramienta para los desarrolladores de aplicaciones m\u00f3viles, y la novedad de esta herramienta es la capacidad que tiene para que el desarrollador escriba su App en lenguaje C#\/F# y el mismo c\u00f3digo sea traducido para ejecutarse en iOS, Android y Windows Phone. Xamarin se puede integrar bien con Visual Studio o desarrollar las aplicaciones con su propio IDE Xamarin Studio.<\/p>\n<p>La primera propuesta de desarrollo era la siguiente: desarrollar una interfaz de usuario nativa con los controles de cada plataforma, consiguiendo de esta forma la gran experiencia nativa que est\u00e1bamos buscando, y a nivel de l\u00f3gica de la aplicaci\u00f3n en vez de desarrollar cada App con lenguajes diferentes como C++, Java u Objective C, desarrollar usando C# para todas, compartiendo por tanto la l\u00f3gica de negocio de las aplicaciones para las tres plataformas m\u00f3viles. \u00a0Esto se consigue gracias a que Xamarin es compatible con los PCL&#8217;s (Portable Class Library). Propicia que podamos compilar una librer\u00eda solo una vez con unos mismos par\u00e1metros y dicha librer\u00eda pueda ser utilizada desde la aplicaci\u00f3n de Windows Phone, iOS e Android de Xamarin.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen1.png\" alt=\"Imagen 1.- Esquema de desarrollo tradicional con Xamarin.\" \/><\/p>\n<p>Esta forma de desarrollo tiene como principal ventaja, el uso de un \u00fanico lenguaje para todas las aplicaciones pero tiene como gran inconveniente que tenemos que desarrollar la interfaz gr\u00e1fica en cada una de las plataformas. Esto es un problema porque aunque la mayor parte del desarrollo se realice en C#, necesitaremos conocer las particularidades de cada plataforma.<\/p>\n<p>En Xamarin, conocedores de esta problem\u00e1tica, han evolucionado su producto sacando Xamarin Forms. Este tipo de proyecto lo que hace es que desarrollemos una \u00fanica interfaz, siendo esta UI la misma en cada uno de los dispositivos en los que se visualiza, es decir, el desarrollo ahora quedar\u00eda de la siguiente forma:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen2.png\" alt=\"Imagen 2.- Arquitectura de Xamarin Forms\" \/><\/p>\n<p><strong>\u00bfC\u00f3mo integrarlo con Office 365?<\/strong><\/p>\n<p>En los art\u00edculos anteriores hemos visto como incluir estas API&#8217;s dentro de desarrollos ASP.NET o Windows 8 es muy sencillo, pr\u00e1cticamente es transparente para el desarrollador. Pero como he comentado en la introducci\u00f3n el objetivo actual es que cualquier desarrollo se pueda utilizar \u00a0en cualquier dispositivo y cualquier plataforma. Para poder utilizar las API&#8217;s de Office 365 en cualquier tipo de proyecto se necesita autenticar la aplicaci\u00f3n con Office 365 con el fin de obtener acceso a los datos de sus usuarios. La autenticaci\u00f3n de la aplicaci\u00f3n incluye tres pasos: crear el contexto de Office 365, obtener el token de acceso, y \u00a0a continuaci\u00f3n ya podemos realizar las peticiones a la API de Office365 que deseemos acceder (Service Calendar, Contacts, Mail, y MyFiles son las servicios por el momento).<\/p>\n<p><strong>Proceso de Autenticaci\u00f3n<\/strong><\/p>\n<p>Nuestro cliente que haga uso del servicio de Discovery de Office 365 debe de realizar el siguiente flujo para poder validad la App que estamos desarrollando:<\/p>\n<p>1. Registrar su aplicaci\u00f3n en el Portal de la Administraci\u00f3n de Azure y configurar el c\u00f3digo de la aplicaci\u00f3n con el ID de cliente y redirigir URI. Luego, en el Portal de la Administraci\u00f3n de Azure, configurar los permisos para la aplicaci\u00f3n. Para m\u00e1s detalles de c\u00f3mo realizarlo<a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/2014\/11\/11\/registrar-una-aplicacion-en-el-portal-de-azure\/\"><span lang=\"ES-UY\">http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/2014\/11\/11\/registrar-una-aplicacion-en-el-portal-de-azure\/<\/span><\/a><\/p>\n<p>2. Su aplicaci\u00f3n obtiene \u00a0el email del usuario. Entra en contacto con Servicio de Discovery con la direcci\u00f3n de correo electr\u00f3nico y a los recursos que la aplicaci\u00f3n quiere acceder.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen3.png\" alt=\"Imagen 3.- Paso 1 de autenticaci\u00f3n\" \/><\/p>\n<p>3. La aplicaci\u00f3n se comunica con el servicio de autorizaci\u00f3n AD de Azure y \u00a0el usuario se autentica y da el consentimiento sobre los recursos a los que tiene acceso (en el supuesto de que no se haya concedido el consentimiento antes). AD Azure emite un c\u00f3digo de autorizaci\u00f3n.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen4.png\" alt=\"Imagen 4.- Paso 3 de autenticaci\u00f3n.\" \/><\/p>\n<p>4. Su aplicaci\u00f3n obtiene el c\u00f3digo de autorizaci\u00f3n. Azure devuelve un token de acceso.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen5.png\" alt=\"Imagen 5.- Paso 4 de autenciaci\u00f3n\" \/><\/p>\n<p>5. Su aplicaci\u00f3n se comunica con el \u00a0Service Discovery usando el token de acceso. Service Discovery regresa respuesta HTTP con identificadores de recursos y URI de acceso para las API&#8217;s de Office 365.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen6.png\" alt=\"Imagen 6.- Paso 5 de autenticaci\u00f3n\" \/><\/p>\n<p>6. Su aplicaci\u00f3n envia el token de actualizaci\u00f3n Azure AD, \u00a0en este token se solicita el acceso a la API de Office 365 junto son sus recursos. Finalmente el AD Azure devuelve un token de acceso para el recurso especificado, junto con un token de actualizaci\u00f3n.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen7.png\" alt=\"Imagen 7.- Paso 6 de autenticaci\u00f3n\" \/><\/p>\n<p>7. La aplicaci\u00f3n ahora puede llamar a la Oficina 365 APIs utilizando el URI del Discovery Service \u00a0y el token de acceso.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen8.png\" alt=\"Imagen  8.- Peticiones a la APIs de Office365\" \/><\/p>\n<p><strong>\u00bfC\u00f3mo lo implementamos?<\/strong><\/p>\n<p><strong>Requisitos Previos:<\/strong><\/p>\n<ul>\n<li>Visual Studio 2013 Service Pack 2 (m\u00ednimo).<\/li>\n<li>Instalado Xamarin para Visual Studio 2013.<\/li>\n<li>Cuenta de Office365.<\/li>\n<li>Subscripci\u00f3n de Azure.<\/li>\n<\/ul>\n<p>Para tener un entorno preparado para esta aplicaci\u00f3n seguir los pasos del siguiente link:\u00a0 <a href=\"https:\/\/github.com\/OfficeDev\/DevCampTraining\/blob\/master\/02.Setting%20up%20the%20Environments\/hands-on-lab.md\"><span lang=\"ES-UY\">https:\/\/github.com\/OfficeDev\/DevCampTraining\/blob\/master\/02.Setting%20up%20the%20Environments\/hands-on-lab.md<\/span><\/a><\/p>\n<p><strong>Objetivo:<\/strong><\/p>\n<p>Vamos a desarrollar una aplicaci\u00f3n Android en la cual se nos pedir\u00e1 por pantalla el Alias de la cuenta de correo que deseamos encontrar dentro de nuestro Exchange Online. Para llevar a cabo este desarrollo implementamos dos proyectos: 1 Portable Class Library y una aplicaci\u00f3n Xamarin.Android<\/p>\n<p><strong>Manos a la obra:<\/strong><\/p>\n<p>1. Iniciamos VS 2013 y creamos un proyecto de PCL (Portable Class Library): \u00abAplicaciones de escritorio -&gt; Biblioteca de clases\u00bb.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen9.png\" alt=\"Imagen 9.-  Tipo de Proyecto a elegir\" \/><\/p>\n<p>2. Seleccionamos los proyectos en los que se puede utilizar esta librer\u00eda. En nuestro caso adem\u00e1s de seleccionar .NET Framework 4.5, Windows 8 y Windows Phone 8.1, seleccionaremos tambi\u00e9n Xamarin.IOS y Xamarin.Android.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen10.png\" alt=\"Imagen 10.- Selecci\u00f3n plataformas donde se puede utilizar la biblioteca\" \/><\/p>\n<p>3. Para facilitarnos la autentificaci\u00f3n existe un paquete en Nuget que nos abstrae de implementar de forma manual todo el proceso anterior. Para ello en nuestra soluci\u00f3n instalaremos el paquete Nuget Active Directory Authentication Library (ADAL). Esta librer\u00eda va por la versi\u00f3n 3.0 (en fase previa).<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen11.png\" alt=\"Imagen 11.- Instalaci\u00f3n Paquete ADAL en NuGet.\" \/><\/p>\n<p><strong>NOTA:<\/strong> La versi\u00f3n que soporta acceso a PCL es la que est\u00e1 en fase previa, se ha anunciado que en futuras versi\u00f3n incluir\u00e1 soporte para Xamarin.Forms. Se recomienda solamente poner en producci\u00f3n paquetes Nuget que est\u00e1n en estado Estable.<\/p>\n<p>4. Instalaremos el paquete de Nuget JSON.Net para transformar las peticiones realizadas a la API de Office 365 en clases de C#.<\/p>\n<p>5. A continuaci\u00f3n dentro del proyecto a\u00f1adiremos una clase CompartiMOSS donde incluiremos la autentificaci\u00f3n contra Office 365 y la llamada a la API de Graph para obtener los emails que responden a este alias. El primer paso que tenemos que hacer es llamar al ADAL para solicitar las credenciales al usuario por pantalla.<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nAuthenticationContext authContext = new AuthenticationContext(commonAuthority);\r\nif (authContext.TokenCache.ReadItems().Count() &gt; 0)\r\nauthContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);\r\nauthResult = await authContext.AcquireTokenAsync(graphResourceUri, clientId, returnUri, parent);\r\nObtenido el token de acceso ya podemos realizar llamadas a las APIs de Office 365 de la siguiente forma:\r\n\r\nstring graphRequest = String.Format(CultureInfo.InvariantCulture, &quot;{0}\/{1}\/users?api-version={2}&amp;$filter=mailNickname eq '{3}'&quot;, graphResourceUri, authResult.TenantId, graphApiVersion, alias);\r\nHttpClient client = new HttpClient();\r\nHttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, graphRequest);\r\nrequest.Headers.Authorization = new AuthenticationHeaderValue(&quot;Bearer&quot;, authResult.AccessToken);\r\nHttpResponseMessage response = await client.SendAsync(request);\r\nstring content = await response.Content.ReadAsStringAsync();\r\njResult = JObject.Parse(content);\r\n<\/pre>\n<p>6. Nos crearemos otra clase, User.cs que es la clase donde almacenaremos la informaci\u00f3n obtenida del servicio REST. Esta clase tendr\u00e1 informaci\u00f3n relativa del usuario.<\/p>\n<p>7. Una vez ya tenemos nuestra librer\u00eda, el siguiente paso es crearnos la aplicaci\u00f3n en el dispositivo que deseamos utilizar. Para este ejemplo vamos a crear una App de Android. Agregamos nuevo proyecto Android-&gt; Blank App (Android).<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen12.png\" alt=\"Imagen 12.- Agregamos proyecto Android a la Soluci\u00f3n.\" \/><\/p>\n<p>En este nuevo proyecto, agregamos el paquete NuGet de ADAL y a\u00f1adimos la referencia al PCL creado anteriormente quedando una estructura del proyecto como la siguiente:<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen13.png\" alt=\"Imagen 13.- Estructura del Proyecto Android.\" \/><\/p>\n<p>Ahora en el proyecto nos queda a\u00f1adirle la Interfaz gr\u00e1fica y a\u00f1adirle la funcionalidad que hemos implementado el PCL. Para agregar la UI a nuestra aplicaci\u00f3n vamos a la carpeta Resources\/layous\/Main.axml y le a\u00f1adimos los componentes que nos hacen falta para nuestro desarrollo. En esta caso a\u00f1adiremos diversos un EditText y varios TextView a dicho fichero. Para finalizar con el desarrollo dentro del fichero MainActivity.cs agregamos la llamada a la librer\u00eda implementada anteriormente:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\nprotected override void OnCreate(Bundle bundle)\r\n       {\r\n           SetContentView(Resource.Layout.Main);\r\n           Button button = FindViewById&lt;Button&gt;(Resource.Id.searchButton);\r\n           button.Click += async delegate\r\n           {\r\n               EditText searchTermText = FindViewById&lt;EditText&gt;(Resource.Id.searchTermText);\r\n               TextView statusResult = FindViewById&lt;TextView&gt;(Resource.Id.statusResult);\r\n               TextView givenResult = FindViewById&lt;TextView&gt;(Resource.Id.givenResult);\r\n               TextView surnameResult = FindViewById&lt;TextView&gt;(Resource.Id.surnameResult);\r\n               TextView upnResult = FindViewById&lt;TextView&gt;(Resource.Id.upnResult);\r\n               TextView phoneResult = FindViewById&lt;TextView&gt;(Resource.Id.phoneResult);\r\n               \r\n               List&lt;User&gt; results = await PCL.CompartiMOSS.CompartiMOSS.SearchByAlias(searchTermText.Text, new AuthorizationParameters(this));\r\n               \r\n                   statusResult.SetTextColor(Color.Green);\r\n                   givenResult.SetText(results&#x5B;0].givenName, TextView.BufferType.Normal);\r\n                   surnameResult.SetText(results&#x5B;0].surname, TextView.BufferType.Normal);\r\n                   upnResult.SetText(results&#x5B;0].userPrincipalName, TextView.BufferType.Normal);\r\n                   phoneResult.SetText(results&#x5B;0].telephoneNumber, TextView.BufferType.Normal);\r\n                \r\n           };\r\n       }\r\n<\/pre>\n<p><span style=\"color: #000000\">Si ejecutamos nuestra aplicaci\u00f3n observamos que nos solicita la autenticaci\u00f3n contra Office 365 de la siguiente forma:<\/span><\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero22\/Como-utilizar-API-Office-365-aplicaciones-multiplataformas-Xamarin\/imagen14.png\" alt=\"Imagen 14.- Aplicaci\u00f3n Android accediendo a las APIS de Office 365.\" \/><\/p>\n<p><strong>Conclusi\u00f3n<\/strong><\/p>\n<p>En este art\u00edculo hemos realizado una introducci\u00f3n al desarrollo de aplicaciones Nativa haciendo uso de Xamarin. Hemos comprobado una de sus grandes ventajas: el compartir la l\u00f3gica de negocio entre las diversas plataformas. Tambi\u00e9n hemos visto<\/p>\n<p><strong>Referencias:<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/msdn.microsoft.com\/en-us\/office\/office365\/howto\/discover-service-endpoints\"><span lang=\"ES\"><strong>http:\/\/msdn.microsoft.com\/en-us\/office\/office365\/howto\/discover-service-endpoints<\/strong><\/span><\/a><\/li>\n<li><a href=\"http:\/\/www.cloudidentity.com\/blog\/2014\/10\/30\/ADAL-NET-V3-PREVIEW-PCL-XAMARIN-SUPPORT\/?utm_content=bufferb39be&amp;utm_medium=social&amp;utm_source=linkedin.com&amp;utm_campaign=buffer\"><span lang=\"ES\"><strong>http:\/\/www.cloudidentity.com\/blog\/2014\/10\/30\/ADAL-NET-V3-PREVIEW-PCL-XAMARIN-SUPPORT\/?utm_content=bufferb39be&amp;utm_medium=social&amp;utm_source=linkedin.com&amp;utm_campaign=buffer<\/strong><\/span><\/a><\/li>\n<li><a href=\"http:\/\/msdn.microsoft.com\/en-us\/office\/office365\/howto\/authenticate-and-use-services\"><span lang=\"ES\"><strong>http:\/\/msdn.microsoft.com\/en-us\/office\/office365\/howto\/authenticate-and-use-services<\/strong><\/span><\/a><\/li>\n<li><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/2014\/11\/11\/registrar-una-aplicacion-en-el-portal-de-azure\/\"><span lang=\"ES\"><strong>http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/2014\/11\/11\/registrar-una-aplicacion-en-el-portal-de-azure\/<\/strong><\/span><\/a><\/li>\n<\/ul>\n<p><strong>\u00a0<\/strong><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Como cada tres meses, se ha publicado un nuevo n\u00famero de la revista de habla hispana CompartiMOSS. En esta ocasi\u00f3n he tenido la fortuna de colaborar escribiendo un art\u00edculo sobre utilizaci\u00f3n de las API&#8217;s de Office 365 en dispostivos m\u00f3viles. &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[127],"class_list":["post-1455","post","type-post","status-publish","format-standard","hentry","category-encamina","tag-xamarin"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Como utilizar las API\u2019s de Office 365 en aplicaciones m\u00f3viles multiplataformas desarrolladas con Xamarin - Desarrollando sobre SharePoint<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Como utilizar las API\u2019s de Office 365 en aplicaciones m\u00f3viles multiplataformas desarrolladas con Xamarin - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"Como cada tres meses, se ha publicado un nuevo n\u00famero de la revista de habla hispana CompartiMOSS. En esta ocasi\u00f3n he tenido la fortuna de colaborar escribiendo un art\u00edculo sobre utilizaci\u00f3n de las API&#8217;s de Office 365 en dispostivos m\u00f3viles. &hellip; Continue reading &rarr;\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss.png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"Como utilizar las API\u2019s de Office 365 en aplicaciones m\u00f3viles multiplataformas desarrolladas con Xamarin\",\"datePublished\":\"2014-12-17T10:30:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/\"},\"wordCount\":1985,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2014\\\/12\\\/LogoCompartimoss.png\",\"keywords\":[\"xamarin\"],\"articleSection\":[\"encamina\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/\",\"name\":\"Como utilizar las API\u2019s de Office 365 en aplicaciones m\u00f3viles multiplataformas desarrolladas con Xamarin - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2014\\\/12\\\/LogoCompartimoss.png\",\"datePublished\":\"2014-12-17T10:30:07+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2014\\\/12\\\/LogoCompartimoss.png\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2014\\\/12\\\/LogoCompartimoss.png\",\"width\":392,\"height\":147},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Como utilizar las API\u2019s de Office 365 en aplicaciones m\u00f3viles multiplataformas desarrolladas con Xamarin - Desarrollando sobre SharePoint","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/","twitter_card":"summary_large_image","twitter_title":"Como utilizar las API\u2019s de Office 365 en aplicaciones m\u00f3viles multiplataformas desarrolladas con Xamarin - Desarrollando sobre SharePoint","twitter_description":"Como cada tres meses, se ha publicado un nuevo n\u00famero de la revista de habla hispana CompartiMOSS. En esta ocasi\u00f3n he tenido la fortuna de colaborar escribiendo un art\u00edculo sobre utilizaci\u00f3n de las API&#8217;s de Office 365 en dispostivos m\u00f3viles. &hellip; Continue reading &rarr;","twitter_image":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss.png","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"Como utilizar las API\u2019s de Office 365 en aplicaciones m\u00f3viles multiplataformas desarrolladas con Xamarin","datePublished":"2014-12-17T10:30:07+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/"},"wordCount":1985,"commentCount":0,"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss.png","keywords":["xamarin"],"articleSection":["encamina"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/","name":"Como utilizar las API\u2019s de Office 365 en aplicaciones m\u00f3viles multiplataformas desarrolladas con Xamarin - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss.png","datePublished":"2014-12-17T10:30:07+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/como-utilizar-las-apis-de-office-365-en-aplicaciones-moviles-multiplataformas-desarrolladas-con-xamarin\/#primaryimage","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss.png","contentUrl":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2014\/12\/LogoCompartimoss.png","width":392,"height":147},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1455"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1455\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}