API de Hello Analytics: Guía de inicio rápido de PHP para aplicaciones web

En este instructivo, se explican los pasos necesarios para acceder a una cuenta de Google Analytics, consultar las APIs de Analytics, manejar las respuestas de la API y generar los resultados. En este instructivo, se usan la API de Core Reporting v3.0, la API de Management v3.0 y OAuth2.0.

Paso 1: Habilita la API de Analytics

Para comenzar a usar la API de Google Analytics, primero debes utilizar la herramienta de configuración, que te guiará para crear un proyecto en la Consola de APIs de Google, habilitar la API y crear credenciales.

Crea un ID de cliente

En la página Credenciales, haz lo siguiente:

  1. Haz clic en Crear credenciales y selecciona ID de cliente de OAuth.
  2. En TIPO DE APLICACIÓN, selecciona Aplicación web.
  3. Asigna un nombre a la credencial.
  4. Deja NOMBRES DE JAVASCRIPT AUTORIZADOS en blanco, ya que no es necesario para este instructivo.
  5. Configura los URIS REDIRECT AUTORIZADOS como http://localhost:8080/oauth2callback.php.
  6. Haz clic en Crear.

Selecciona la credencial que acabas de crear y haz clic en Descargar JSON. Guarda el archivo descargado como client_secrets.json; lo necesitarás más adelante en el instructivo.

Paso 2: Instala la biblioteca cliente de Google

Puedes obtener la biblioteca cliente de las APIs de Google para PHP descargar la versión o usar Composer:

composer require google/apiclient:^2.0

Paso 3: Configura la muestra

Deberás crear dos archivos:

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

index.php

Este archivo contiene la lógica principal para consultar las APIs 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 controla 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: Ejecuta la muestra

Después de habilitar la API de Analytics, instala la biblioteca cliente de las APIs de Google para PHP y configura el código fuente de muestra con el que la muestra está lista para ejecutarse.

Ejecuta la muestra con un servidor web configurado para entregar PHP. Si usas PHP 5.4 o una versión más reciente, puedes usar el servidor web de prueba integrado de PHP mediante la ejecución del siguiente comando:

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

Luego, visita http://localhost:8080 en tu navegador.

Cuando termines estos pasos, la muestra mostrará el nombre de la primera vista (perfil) de Google Analytics del usuario autorizado y la cantidad de sesiones de los últimos siete días.

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