API Hello Analytics: inicio rápido en PHP para aplicaciones web

Este tutorial te guiará a través de los pasos necesarios para acceder a una cuenta de Google Analytics, consultar las API de Google Analytics, gestionar las respuestas de la API y extraer los resultados. Para ello, se usan la API de informes centrales v3.0, la API de administración v3.0 y OAuth 2.0.

Paso 1: Habilitar la API de Analytics

Para empezar a usar la API de Google Analytics, primero debes utilizar la herramienta de configuración, que te guiará por los pasos necesarios para crear un proyecto en la consola de la API de Google, habilitar la API y crear las credenciales.

Crear un ID de cliente

En la página de credenciales:

  1. Haz clic en Create credentials (Crear credenciales) y selecciona OAuth client ID (ID de cliente de OAuth).
  2. En TIPO DE APLICACIÓN, selecciona Aplicación web.
  3. Asigna un nombre a las credenciales.
  4. Deja el campo AUTHORIZED JAVASCRIPT ORIGINS (ORÍGENES DE JAVASCRIPT AUTORIZADOS) en blanco, ya que no es necesario para este tutorial.
  5. Configura URIS DE REDIRECCIÓN AUTORIZADOS como http://localhost:8080/oauth2callback.php.
  6. Haz clic en Create (Crear).

Selecciona las credenciales que acabas de crear y haz clic en Descargar JSON. Guarda el archivo descargado con el nombre client_secrets.json; lo necesitarás más adelante en el tutorial.

Paso 2: instalar la biblioteca de cliente de Google

Para obtener la biblioteca de cliente de APIs de Google para PHP, descarga la versión o utiliza la herramienta Composer:

composer require google/apiclient:^2.0

Paso 3: configurar el código de muestra

Debes crear dos archivos:

  1. index.php será la página principal que visite el usuario.
  2. oauth2callback.php gestionará la respuesta de OAuth 2.0.

index.php

Este archivo contiene la lógica principal para consultar las API de Google Analytics y mostrar los resultados. Copia o descarga el primer código de muestra en index.php.

<?php
// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';

// Start a session to persist credentials.
session_start();

// Create the client object and set the authorization configuration
// from the client_secretes.json you downloaded from the developer console.
$client = new Google_Client();
$client->setAuthConfig(__DIR__ . '/client_secrets.json');
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);

// If the user has already authorized this app then get an access token
// else redirect to ask the user to authorize access to Google Analytics.
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
  // Set the access token on the client.
  $client->setAccessToken($_SESSION['access_token']);

  // Create an authorized analytics service object.
  $analytics = new Google_Service_Analytics($client);

  // Get the first view (profile) id for the authorized user.
  $profile = getFirstProfileId($analytics);

  // Get the results from the Core Reporting API and print the results.
  $results = getResults($analytics, $profile);
  printResults($results);
} else {
  $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php';
  header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

function getFirstProfileId($analytics) {
  // Get the user's first view (profile) ID.

  // Get the list of accounts for the authorized user.
  $accounts = $analytics->management_accounts->listManagementAccounts();

  if (count($accounts->getItems()) > 0) {
    $items = $accounts->getItems();
    $firstAccountId = $items[0]->getId();

    // Get the list of properties for the authorized user.
    $properties = $analytics->management_webproperties
        ->listManagementWebproperties($firstAccountId);

    if (count($properties->getItems()) > 0) {
      $items = $properties->getItems();
      $firstPropertyId = $items[0]->getId();

      // Get the list of views (profiles) for the authorized user.
      $profiles = $analytics->management_profiles
          ->listManagementProfiles($firstAccountId, $firstPropertyId);

      if (count($profiles->getItems()) > 0) {
        $items = $profiles->getItems();

        // Return the first view (profile) ID.
        return $items[0]->getId();

      } else {
        throw new Exception('No views (profiles) found for this user.');
      }
    } else {
      throw new Exception('No properties found for this user.');
    }
  } else {
    throw new Exception('No accounts found for this user.');
  }
}

function getResults($analytics, $profileId) {
  // Calls the Core Reporting API and queries for the number of sessions
  // for the last seven days.
  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>";
  }
}

?>

oauth2callback.php

Este archivo gestiona la respuesta de OAuth 2.0. Copia o descarga el segundo código de muestra en oauth2callback.php.

<?php

// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';

// Start a session to persist credentials.
session_start();

// Create the client object and set the authorization configuration
// from the client_secrets.json you downloaded from the Developers Console.
$client = new Google_Client();
$client->setAuthConfig(__DIR__ . '/client_secrets.json');
$client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php');
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);

// Handle authorization flow from the server.
if (! isset($_GET['code'])) {
  $auth_url = $client->createAuthUrl();
  header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
  $client->authenticate($_GET['code']);
  $_SESSION['access_token'] = $client->getAccessToken();
  $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/';
  header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

Paso 4: Ejecutar el código de muestra

Después de haber habilitado la API de Analytics, de haber instalado la biblioteca de cliente para PHP de las API de Google y de haber configurado el código fuente, la muestra está lista para ejecutarse.

Ejecuta el código de muestra con un servidor web configurado para servir PHP. Si usas PHP 5.4 o una versión más reciente, puedes utilizar el servidor web de prueba integrado de PHP ejecutando el siguiente comando:

php -S localhost:8080 /path/to/sample

Después, visita http://localhost:8080 en tu navegador.

Cuando finalices estos pasos, la muestra enviará el nombre de la primera vista (perfil) de Google Analytics correspondiente al usuario autorizado y el número de sesiones de los últimos siete días.

Con el objeto de servicio de Analytics autorizado ya puedes ejecutar cualquiera de las muestras de código que se encuentran en los documentos de referencia de la API de administración. Por ejemplo, podrías intentar cambiar el código para usar el método accountSummaries.list.