Hello Analytics Reporting API v4; PHP-Kurzanleitung für Webanwendungen

Diese Anleitung führt Sie durch die erforderlichen Schritte für den Zugriff auf die Analytics Reporting API v4.

1. API aktivieren

Damit Sie die Analytics Reporting API v4 verwenden können, müssen Sie zuerst das Einrichtungstool verwenden. Es führt Sie durch die Erstellung eines Projekts in der Google API Console, durch das Aktivieren der API und durch das Erstellen von Anmeldedaten.

Hinweis: Um eine Web-Client-ID oder einen Client für installierte Anwendungen zu erstellen, müssen Sie auf dem Zustimmungsbildschirm einen Produktnamen festlegen. Falls noch nicht geschehen, werden Sie aufgefordert, den Zustimmungsbildschirm zu konfigurieren.

Anmeldedaten erstellen

  • Öffnen Sie die Seite Anmeldedaten.
  • Klicken Sie auf Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.
  • Wählen Sie als Anwendungstyp die Option Webanwendung aus.
  • Benennen Sie die Client-ID als Kurzanleitung und klicken Sie auf Erstellen.
  • Lassen Sie das Feld Autorisierte JavaScript-Quellen leer. Sie ist für diese Anleitung nicht erforderlich.
  • Legen Sie Autorisierte Weiterleitungs-URIs auf http://localhost:8080/oauth2callback.php fest.
  • Klicken Sie auf Erstellen.

Klicken Sie auf der Seite „Anmeldedaten“ auf die neu erstellte Client-ID und dann auf JSON herunterladen. Speichern Sie sie als client_secrets.json. Sie benötigen sie später in der Anleitung.

2. Clientbibliothek installieren

Sie können die Google APIs-Clientbibliothek für PHP mit Composer abrufen:

composer require google/apiclient:^2.0

3. Beispiel einrichten

Sie müssen zwei Dateien erstellen:

  • index.php ist die Hauptseite, die der Nutzer besucht.
  • oauth2callback.php verarbeitet die OAuth 2.0-Antwort.

index.php

Diese Datei enthält die Hauptlogik zum Abfragen der Google Analytics APIs und zum Anzeigen der Ergebnisse.

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


/**
 * Queries the Analytics Reporting API V4.
 *
 * @param service An authorized Analytics Reporting API V4 service object.
 * @return The Analytics Reporting API V4 response.
 */
function getReport($analytics) {

  // Replace with your view ID, for example 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 );
}


/**
 * Parses and prints the Analytics Reporting API V4 response.
 *
 * @param An Analytics Reporting API V4 response.
 */
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($metrics); $j++) {
        $values = $metrics[$j]->getValues();
        for ($k = 0; $k < count($values); $k++) {
          $entry = $metricHeaders[$k];
          print($entry->getName() . ": " . $values[$k] . "\n");
        }
      }
    }
  }
}


oauth2callback.php

Diese Datei verarbeitet die OAuth 2.0-Antwort. Kopieren Sie den zweiten Beispielcode oder laden Sie ihn nach oauth2callback.php herunter.

<?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. Beispiel ausführen

Führen Sie das Beispiel mit einem Webserver aus, der für die Bereitstellung von PHP konfiguriert ist. Wenn Sie PHP 5.4 oder höher verwenden, können Sie den integrierten Test-Webserver von PHP mit dem folgenden Befehl ausführen:

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

Rufen Sie dann in Ihrem Browser http://localhost:8080 auf.

Wenn Sie diese Schritte abgeschlossen haben, gibt das Beispiel die Anzahl der Sitzungen für die angegebene Datenansicht in den letzten sieben Tagen aus.