API de informes Hello Analytics (versión 4): inicio rápido en PHP para aplicaciones web

Con la ayuda de este tutorial podrás seguir los pasos para acceder a la versión 4 de la API de informes de Analytics.

1. Habilitar la API

Para empezar a usar la versión 4 de la API de informes de Analytics, primero debes acceder a la herramienta de configuración y seguir los distintos pasos para crear un proyecto en la consola de Google Cloud Platform, como habilitar la API o crear credenciales.

Nota: Para crear un ID de cliente web o un cliente para la aplicación descargada, debes definir un nombre de producto en la pantalla de consentimiento. Si todavía no lo has hecho, se te pedirá que realices el proceso para configurar la pantalla de consentimiento.

Crear credenciales

  • Abre la página Credentials (Credenciales).
  • Haz clic en Create credentials (Crear credenciales) y selecciona OAuth client ID (ID de cliente de OAuth).
  • En Application type (Tipo de aplicación), selecciona Web application (Aplicación web).
  • En el campo del ID de cliente, indica quickstart y haz clic en Create (Crear).
  • Deja el campo Authorized JavaScript origins (Orígenes de JavaScript autorizados) en blanco, ya que no es necesario para este tutorial.
  • Define URIs de redireccionamiento autorizados en http://localhost:8080/oauth2callback.php.
  • Haz clic en Create (Crear).

En la página Credenciales, haz clic en el ID de cliente que acabas de crear y, después, en Descargar JSON. Guarda el archivo como client_secrets.json; lo necesitarás más adelante en el tutorial.

2. Instalar la biblioteca de cliente

Puedes obtener la biblioteca de cliente de las API de Google para PHP con Composer:

composer require google/apiclient:^2.0

3. Configurar el código de muestra

Debes crear dos archivos:

  • index.php será la página principal que visite el usuario.
  • 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.
  • Sustituye el valor de VIEW_ID con un ID de vista, que puedes obtener mediante el Explorador de cuentas.
<?php

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

session_start();

$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_AnalyticsReporting($client);

  // Call the Analytics Reporting API V4.
  $response = getReport($analytics);

  // Print the response.
  printResults($response);

} else {
  $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php';
  header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

function getReport($analytics) {

  // Replace with your view ID. E.g., XXXX.
  $VIEW_ID = "<REPLACE_WITH_VIEW_ID>";

  // Create the DateRange object.
  $dateRange = new Google_Service_AnalyticsReporting_DateRange();
  $dateRange->setStartDate("7daysAgo");
  $dateRange->setEndDate("today");

  // Create the Metrics object.
  $sessions = new Google_Service_AnalyticsReporting_Metric();
  $sessions->setExpression("ga:sessions");
  $sessions->setAlias("sessions");

  // Create the ReportRequest object.
  $request = new Google_Service_AnalyticsReporting_ReportRequest();
  $request->setViewId($VIEW_ID);
  $request->setDateRanges($dateRange);
  $request->setMetrics(array($sessions));

  $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
  $body->setReportRequests( array( $request) );
  return $analytics->reports->batchGet( $body );
}

function printResults($reports) {
  for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) {
    $report = $reports[ $reportIndex ];
    $header = $report->getColumnHeader();
    $dimensionHeaders = $header->getDimensions();
    $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
    $rows = $report->getData()->getRows();

    for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {
      $row = $rows[ $rowIndex ];
      $dimensions = $row->getDimensions();
      $metrics = $row->getMetrics();
      for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {
        print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n");
      }

      for ($j = 0; $j < count( $metricHeaders ) && $j < count( $metrics ); $j++) {
        $entry = $metricHeaders[$j];
        $values = $metrics[$j];
        print("Metric type: " . $entry->getType() . "\n" );
        for ( $valueIndex = 0; $valueIndex < count( $values->getValues() ); $valueIndex++ ) {
          $value = $values->getValues()[ $valueIndex ];
          print($entry->getName() . ": " . $value . "\n");
        }
      }
    }
  }
}

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));
}

4. Ejecutar el código de muestra

Ejecuta la 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 -t /path/to/sample

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

Cuando finalices estos pasos, el código de muestra enviará el número de sesiones de los últimos siete días correspondiente a la vista indicada.