Como acceder a google analitycs con php y auth2


Llevo algunos dias tratando de acceder a la data de google analitycs para desplegar información de diferentes paginas para cada usuario registrado

Entonces para no usar un plugin que se encargue de insertar las visitas diarias decidimos usar google analytcis y filtrar por usuario la informacion que se quiere mostrar.

El detalle es que debemos usar un token de google y un token refresh para no tener que hacer login cada vez que el usuario quiera acceder a la data, entonces en este tutorial vamos a ver como acceder a google anlitycs sin tener que hacer el login para conseder permisos.

1.- Configurar google console developers

Como primer paso debemos configurar nuestra aplicacion en google developers console que se va encargar de solicitar los permisos para acceder a google analitycs o calquier otro servicio de google APIS con php.

Debemos crear un nuevo proyecto como se ve en la siguiente captura:

una vez que creamos seleccionamos el proyecto y hacemos click sobre el boton habilitar APIS y servicios

y buscamos el servicio de GOOGLE ANALITYCS

una vez que seleccionamos el API de google Anlytics haceos click sobre el boton HABILITAR.

Listo ya tenemos el servicio de GOOGLE analytcis habilitado ahora debemos crear las credenciales conseder los permisos de lectura para esto vamos al menu de CREDENCIALES, hacemos click sobre el boton crear credenciales y seleccionamos la opcion ID de cliente AUTH

Como es el primer proyecto que configuramos nos va a pedir configurar la pantalla de autorización, llenamos el formulario con los campos que se requiren.

Si tienes google para empresas es importante seleccionar que sea INTERNO para que solo la cuenta principal tenga ACCESOS ya que solo queremos que 1 usuario acceda a la cuenta de google analitycs.

ahora nos va a pedir seleccionar el tipo de aplicacion seleccionamos de TIPO WEB.

ahora viene una parte importante para poder obtener los tokens en el input de URIs de redirección autorizados debemos colocar la siguiente URL: https://developers.google.com/oauthplayground

hacemos click en crear y guardamos en un lugar seguro el cliente id y secreto de cliente

excelente ya tenemos todo configurado para poder acceder a la api de google analitycs ahora vamos a generar los tokens para trabajar de forma offline y poder acceder siempre a la data sin tener que hacer login cada vez.

Vamos a la siguiente URL https://developers.google.com/oauthplayground y en el icono del engrane seleccionamos el checbox para usar mis propias credenciales y colocamos el CLIENTE ID y secreto que generamos anteriormente.

Ahora en el listado de servicios seleccionamos ANALITYCS REPORTING V4 la opción: https://www.googleapis.com/auth/analytics.readonly ya que solo queremos leer los datos y haceos click en el boton

Si has seguido todos los pasos correctamente debe selecionar la cuenta con la que quieres acceder (que debe tener permisos o ser el admin de la cuenta de google analitycs ) y por ultimo hacer click en PERMITIR

Bien ya tenemos el Authorization code y ahora debemos genera el token y token refresh que nos ayuda a generar un nuevo token y evitar el formulario para permitir los accesos hacemos click en el boton Exchange authorization code for tokens

2.- Como consultar datos de google analitcys con php

Ya tenemos los tokens para acceder ahora debemos conectar el SDK de php en el siguiente enlace puedes instalar con composer el SDK https://developers.google.com/analytics/devguides/config/mgmt/v3/quickstart/web-php?hl=es

<?php
    require_once("vendor/autoload.php");


    function initializeAnalytics(){
        $client = new Google_Client();
        $client->setClientId('CLIENT_ID');
        $client->setClientSecret('SECRET CLIENTE');
        $client->setRedirectUri('https://accounts.google.com/o/oauth2/v2/auth');
        $client->setScopes('https://www.googleapis.com/auth/analytics.readonly');
        $client->setState('offline');
        $client->refreshToken('REFRESH_TOKEN');
        $newtoken = $client->getAccessToken();
        $client->setAccessToken($newtoken);
        $analytics = new Google_Service_Analytics($client);
        return $analytics;    
    }

    function getResults($analytics, $profileId) {
      return $analytics->data_ga->get(
          'ga:' . $profileId,
          '7daysAgo',
          'today',
          'ga:sessions');
    }

    function printResults($results) {
        // Parses the response from the Core Reporting API and prints
        // the profile name and total sessions.
        if (count($results->getRows()) > 0) {
            // Get the profile name.
            $profileName = $results->getProfileInfo()->getProfileName();

            // Get the entry for the first entry in the first row.
            $rows = $results->getRows();
            $sessions = $rows[0][0];

            // Print the results.
            print "<p>First view (profile) found: $profileName</p>";
            print "<p>Total sessions: $sessions</p>";
        } else {
            print "<p>No results found.</p>";
        }
    }

    $analytics = initializeAnalytics();
    $results = getResults($analytics,'159762143');
    printResults($results);
?>

si ejecutas este codigo en tu local pudes obtener las visitas de los ultimos 7 dias

Gracias por compartir y comentar este post espero sea de gran ayuda en otro tutorial te mostraste como subir archivos a google DRIVE por ejemplo para crear un respaldo automatico y no tener que hacer login.