Oct 152013
 
Artículo Analytics

Google ha anunciado que retirará en los APIs de Adwords y DFP (DoubleClick for publishers) el soporte al antiguo mecanismo de autentificación ClientLogin, que deberá ser sustituido por el nuevo mecanismo OAuth2 a lo largo del año 2014 (ver anuncio completo en “Announcing the sunset of ClientLogin in the AdWords and DFP APIs“, en el blog oficial de desarrolladores de Google).

Actualmente, en muchos sitios web hay aplicaciones desarrolladas para llevar a cabo labores de administración y mantenimiento, que se conectan mediante el mecanismo ClientLogin a alguno de los numerosos APIs de Google. Estas aplicaciones deberán ser eventualmente adaptadas para hacer uso del nuevo mecanismo, conforme Google avance en su política de forzar el uso de OAuth2.

En este artículo se exponen los pasos para que una aplicación “offline” pueda conectarse a un API de Google sin necesidad de que intervenga un usuario cada vez para conceder la autorización de acceso.

Paso 1. Registrar la aplicación en la consola de los APIs de Google

Comenzamos por acceder a la consola de Google Cloud (validándonos si es necesario con nuestra cuenta de google), y pulsamos en el botón “Create Project”. En el formulario que aparece, establecemos el nombre del proyecto (en el ejemplo “OAuth2 Project”. Al enviarlo, aparece un pop-up informándonos de que se va a proceder a realizar una verificación mediante un mensaje SMS.

crear-proyecto-oauth2

Tras pulsar en “Continue”, aparece otro formulario solicitando el número de móvil al que enviar el código, y a continuación otro en el que introducimos el código de verificación que recibimos a los pocos segundos.

Tras esto, se presenta la pantalla en la que podemos configurar el proyecto. Pulsando sobre “APIs & auth” en el menú de la izquierda, aparece la lista de APIs a las que deseamos acceder. En nuestro caso, pulsamos sobre el botón “OFF” de “Analytics API” para permitir al proyecto el uso de Google Analytics:

oauth2-enable-analytics

 

A continuación procedemos a registrar la aplicación pulsando en el menú de la izquierda la opción “Registered Apps” y a continuación pulsando el botón “Register App” que aparece en la parte superior. En el formulario que aparece, establecemos el nombre de la aplicación como “OpenAlfa Analytics App”, y el tipo de aplicación como “Native”:

oauth2-register-app

Al cabo de poco tiempo, se actualiza la pantalla con la información relevante de la aplicación creada. Anotamos el Client ID, Client Secret y Redirect URI que aparecen en ella:

oauth2-id-and-secret

Paso 2. Descargar una librería de acceso al API

Aunque es posible programar directamente el acceso al API, es mucho más cómodo utilizar una librería que se encarga de los detalles de la conexión. Google ofrece librerías de acceso al API en distintos lenguajes de programación.

En nuestro caso, descargamos la librería para el lenguaje PHP. El fichero se llama “google-api-php-client-0.6.7.tar.gz”. Lo descomprimimos, y colocamos el directorio “google-api-php-client” que contiene en la raíz de nuestro servidor web.

Paso 3. Obtener un access token y un refresh token

A continuación creamos, también en la raíz de nuestro servidor web, el script “obtener_access_token.php” con el siguiente contenido:

Notas:

  • Debemos colocar el Client ID y Client Secret que hemos obtenido previamente en las correspondientes llamadas a setClientId y setClientSecret.
  • Es obligatorio realizar la llamada a setScopes, para indicar los APIs a los que queremos tener acceso. En el ejemplo, el scope 'https://www.googleapis.com/auth/analytics' nos da acceso para leer y modificar la configuración de Google Analytics.

A continuación, entramos en un navegador y nos validamos con la cuenta de google que va a conceder a la aplicación permiso de acceso. Despues, accedemos por primera vez desde el navegador al script (con una url de la forma http://www.dominio.com/obtener_access_token.php). En este primer acceso, no se dispone de un access token, y el navegador es redirigido a la url de solicitud de autorización (generada en la llamada a createAuthUrl():

oauth2-auth-request

Al pulsar “Accept”, se presenta en pantalla el código de autorización:

oauth2-auth-code

 

Copiamos el código, y volvemos a acceder al script, añadiendo el código como valor de un argumento ‘code’, con una url de la forma:

En el segundo acceso, el script realiza una llamada a $client->authenticate(), con la cual obtiene un access token y un refresh token, en forma de una estructura JSON, y guarda esta información en un fichero refreshtoken.conf.Esta es la información que necesita para volver a acceder al API más adelante, sin necesidad de volver a conceder interactivamente la autorización.

Paso 4. Conectarse al API con OAuth2, para realizar las operaciones deseadas

Con esto, ya es posible escribir el código para que- el script de administración se conecte al API sin necesidad de que el usuario intervenga.

Por ejemplo, podemos escribir un script “imprime-cuentas-analytics.php”, que presenta en pantalla las cuentas de analytics a las que tiene acceso el usuario, de la siguiente forma:

Como vemos, el script inicializa el accessToken con el contenido del fichero ‘refreshtoken.conf’.

A continuación, hace una llamada a getAccessToken(). Esta función se encarga de comprobar si el token de acceso es válido o ha caducado, y en este último caso, se encarga de obtener un nuevo access token.

El script puede ejecutarse desde la línea de comando, o accediendo a el desde el navegador. Si se realiza el acceso desde el navegador, el script se puede mejorar guardando el access token obtenido en sesión o en un cookie, para ser utilizado en los siguientes accesos que se realicen.

Indice de artículos sobre programación en lenguaje PHP

 

 Publicado por en 10:31 am

 Deja un comentario

(requerido)

(requerido)