viernes, 17 de julio de 2009

Autenticacion Google

Este es un pequeño y minúsculo tutorial de cómo usar la autenticación de Google.

Aunque este método no es el recomendado para autenticar una aplicación usando una cuenta de Google, esto nos puede dar pie para conocer el SaaS (Software as a Service) usando Google desde NetBeans.

1. Crearemos una aplicación Java ya sea Desktop o Web. Igual da :)
2. Abrimos el panel de Prestaciones (Services) Ctrl+5
3. Seleccionamos el nodo Servicios Web > Google > Accounts Service > [accounts] >[ClientLogin] > accounts_clientLogin

4. Lo arrastramos y lo soltamos sobre el editor de código de Java. Debería mostrar una ventana que pide parámetros para el servicio de Google. Yo lo hice sobre un JSP, y me muestra lo siguiente:
Naturalmente que el passwd es de cada uno.
Clic en Aceptar y con esto nos generará un código especial.

5. Hay que definir un key único. Lo que recomiendo es hacer un md5 de cualquier texto que le guste. Por ejemplo, para la frase "Anita lava la tina", el md5 generado es "064439084cee1308a77cb7a9aa67773a" y lo usaré como key. Así que, abrimos el archivo googleaccountsserviceauthenticator.properties que se creó en el proyecto y colocamos ese valor para la propiedad api_key.
6. Editamos el código fuente donde insertamos el SaaS como algo a lo siguiente:


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%@ page import="org.netbeans.saas.*, org.netbeans.saas.google.*" %>
        <pre>
            <%

            try {
                String accountType = "GOOGLE";
                String email = "diego.silval@gmail.com";
                String passwd = "loremloremlorem";
                String service = "xapi";
                String source = "apuntesdejava-demogoogle-1";

                RestResponse result = GoogleAccountsService.accountsClientLogin(accountType, email, passwd, service, source);
                //TODO - Uncomment the print Statement below to print result.
                if (result.getResponseCode() == 200) {
                    out.println("The SaasService returned:\n" + result.getDataAsString() + "");
                    out.println("Response: " + result.getResponseMessage());
                } else {
                    out.println("Hubo error en la autenticacion:" + result.getResponseMessage());
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            %>

        </pre>

    </body>
</html>
Y listo.. lo ejecutamos, y nos debería mostrar los tokens de respuesta.

En otro post comentaré cómo acceder en sí a los servicios de google. Son bastantes y muy interesantes.