Cada día son más las aplicaciones y sitios que se conectan y consumen servicios de otros proveedores, como Windows Live, Gmail, Yahoo!, Facebook, Twitter, MySpace, etc., por tal motivo me pareció bueno hacer una serie de artículos para explicar cómo utilizar varios de esos servicios desde .NET.
En este primer artículo de la serie voy a explicar cómo obtener la lista de contactos de la cuenta de un usuario de Gmail utilizando su “usuario” y “contraseña”.
Una vez bajado e instalado este paquete necesitamos que nuestro proyecto, el que va a leer las direcciones de correo de la libreta de direcciones del usuario, tenga la referencia a tres librerías del paquete antes bajado:
- Google.GData.Client
- Google.GData.Contacts
- Google.GData.Extensions
La primera librería es la que nos permite conectarnos al servicio de Google Data, la segunda es la que nos da la posibilidad de consultar y modificar los contactos del usuario, y la última la necesitamos porque algunos tipos de datos (como el e-mail) están declarados como clases en ella.
Ahora bien, con nuestra aplicación referenciando a estas DLLs ya podemos consultar los mails, simplemente tenemos que utilizar la clase ContactsRequest la cual utiliza la clase RequestSettings para establecer el usuario y clave, luego solamente hay que leer la información obtenida. Pero como 10 líneas de código valen más que 1000 palabras, acá les dejo un método que, suministrándole un usuario y contraseña, nos devuelve la lista de contactos con su e-mail:
using System.Collections.Generic; using Google.Contacts; using Google.GData.Client; using Google.GData.Extensions; public static class GMail { /// <summary> /// Datos de una cuenta /// </summary> public struct Account { /// <summary> /// Nombre de la cuenta /// </summary> public string Title { get; set; } /// <summary> /// Dirección de correo de la cuenta /// </summary> public string Address { get; set; } } /// <summary> /// Nos devuelve la lista de contactos con su e-mail /// </summary> /// <param name="Account">Cuenta de correo del usuario</param> /// <param name="Password">Contraseña</param> /// <returns>Lista de contactos</returns> public static List<Account> GetContacts(string Account, string Password) { List<Account> objResult = new List<Account>(); RequestSettings objRS = new RequestSettings("Aplicación de ejemplo", Account, Password); ContactsRequest objCR = new ContactsRequest(objRS); Feed<Contact> objFeed = objCR.GetContacts(); foreach (Contact objContact in objFeed.Entries) foreach (EMail objEmail in objContact.Emails) objResult.Add(new Account() { Title = objContact.Title, Address = objEmail.Address }); return objResult; } }
Espero que les sea de utilidad.
Suerte!