Autenticación en dominios Google para usar herramientas Google API

Google Apps for Business es un conjunto de aplicaciones de Google en la nube pensadas para ser utilizadas en un entorno coporativo, de modo que podemos hacer uso de todo el potencial de las herramientas de Google utilizando el dominio de una empresa. Así, se externaliza el correo, que pasa a estar en Gmail y se pueden hacer uso de herramientas como GDocs o Calendar. Los beneficios de este cambio son muchos, sobre todo a la hora de compartir información, seguridad y acceso ubicuo a los datos, lo que permite implementar fácilmente el teletrabajo.

Además de las operaciones que se puede llevar a cabo como usuarios normales de Google Apps, es posible, haciendo uso de las API ue nos propocionan, llevar a cabo tareas de automatización o integración mucho más fácilmente.

Una vez que tenemos nuestro dominio “tomado” por Google, disponemos de la posibilidad de desarrollar software que gestione y automatice muchas de las operaciones que son deseables en un entorno como este. Por ejemplo: cargar datos de agenda en Calendar; subir documentos en GDocs automáticamente; traspasar datos de los correos convencionales a los de Gmail.

Las API pueden encontrarse en este enlace. Como se puede ver existen muchos tipos específicos, dependiendo del servicio al que se vaya a acceder. En este ejemplo vamos a usar la API de Contacts, con el fin de listar los contactos de un usuario de nuestro dominio. (dominio.com). Es decir, queremos mostrar por pantalla los contactos de mysticalpotato@dominio.com. Obviamente dominio.com es nuestro, y lo tenemos Google Apps for Business.

Todas las API comparten un acceso común de autenticación para poder usarlas, es decir, para poder realizar operaciones sobre los usuarios. En este mismo blog encontrarás cómo Twitter usa el sistema OAuth. en el que, a través de un sistema de 3 pasos, se requería al usuario que diera permiso para acceder a sus datos con la API. Sin embargo en esta ocasión, al ser nosotros los administradores del dominio “dominio.com”, tenemos acceso a una autenticación de 2 pasos (2 legged), en la que no es necesario el consentimiento de un usuario de nuestro dominio. Puedes encontrar más información en la página oficial de la API de Contacts.

La autenticación de dos pasos consiste en que el administrador genera una clave y un secret (consumer key y consumer secret), que va a utilizar la aplicación a la hora de autenticar la API, y además, en cada petición se incluirá el identificador del usuario para indicar que la operación se hace en nombre de ese usuario y sólo le afecta a él. Lógicamente, la seguridad radica en que el programador de la API recibe la clave del administrador, con lo que le reconoce el permiso para llevar a cabo las operaciones. De este modo el usuario del dominio no tiene que realizar el tedioso paso de autenticarse.

El administrador generará la clave en una ventana de administración del dominio como esta :

Se puede ver el “consumer key”, que coincide con el nombre del dominio, y el “consumer secret”, que se genera automáticamente. Muy importante es marcar “Allow access to all APIs”. Se puede encontrar más información en la fuente de esta imagen:http://code.google.com/intl/es/googleapps/domain/articles/2lo-in-tasks-for-admins.html

Una vez se tienen estos valores, se deberán utilizar convenientemente junto con las librerías API de Google for APPS .

El siguiente programa de ejemplo usa las librerías de Google Contacts para obtener los contactos de un usuario de nuestro dominio de Google:


import java.io.IOException;
import java.net.URL;

import com.google.gdata.client.authn.oauth.GoogleOAuthParameters;
import com.google.gdata.client.authn.oauth.OAuthHmacSha1Signer;
import com.google.gdata.client.authn.oauth.OAuthParameters.OAuthType;
import com.google.gdata.client.contacts.ContactsService;
import com.google.gdata.data.contacts.ContactEntry;
import com.google.gdata.data.contacts.ContactFeed;

public class ejecutable2LeggedContacts
{

private static final long serialVersionUID = 1L;

private static final String consumerKey = "dominio.com";
 private static final String consumerSecret = "aefsedgwqefylrp1lklkaE1smU";
 private static final String usuario = "mysticalpotato@dominio.com";
 //Scope para acceso a la API concreta de Contacts
 private static final String scope = "https://www.google.com/m8/feeds";
 public static void main(String[] args)
 {
 GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
 oauthParameters.setOAuthConsumerKey(consumerKey);
 oauthParameters.setOAuthConsumerSecret(consumerSecret);
 oauthParameters.setOAuthType(OAuthType.TWO_LEGGED_OAUTH);
 oauthParameters.setScope(scope);
 oauthParameters.addCustomBaseParameter("xoauth_requestor_id", usuario);

try
 {
 URL feedUrl = new URL("https://www.google.com/m8/feeds/contacts/"
 + usuario + "/full");

ContactsService contactsService = new ContactsService("IE-Contacts");
 contactsService.setOAuthCredentials(oauthParameters,
 new OAuthHmacSha1Signer());

//Recuperación de los contactos que tiene el usuario
 ContactFeed contactFeed = contactsService.getFeed(feedUrl,
 ContactFeed.class);
 for (ContactEntry ce : contactFeed.getEntries())
 {
 if (ce != null)
 {
 System.out.println("CE:"
 + ce.getName().getFullName().toString());

}

}
 } catch (Exception e)
 {
 e.printStackTrace();
 }

System.out.println("Proceso Finalizado");
 }

}

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s