Halo Analytics Reporting API v4; panduan memulai PHP untuk aplikasi web

Tutorial ini akan memandu langkah-langkah yang diperlukan untuk mengakses Analytics Reporting API v4.

1. Mengaktifkan API

Untuk mulai menggunakan Analytics Reporting API v4, Anda harus menggunakan alat penyiapan terlebih dahulu, yang memandu Anda membuat project di Konsol API Google, mengaktifkan API, dan membuat kredensial.

Catatan: Untuk membuat Client ID Web atau Klien Aplikasi Terinstal, Anda harus menetapkan nama produk di layar izin. Jika belum melakukannya, Anda akan diminta untuk Mengonfigurasi layar izin.

Buat kredensial

  • Buka halaman Credentials.
  • Klik Buat kredensial dan pilih Client ID OAuth
  • Untuk Jenis aplikasi, pilih Aplikasi web.
  • Beri nama client ID quickstart, lalu klik quickstart.
  • Biarkan Asal JavaScript resmi kosong, karena hal ini tidak diperlukan untuk tutorial ini.
  • Setel URI pengalihan yang diotorisasi ke http://localhost:8080/oauth2callback.php
  • Klik Create.

Dari halaman Credentials, klik client ID yang baru dibuat, lalu klik Download JSON dan simpan sebagai client_secrets.json; Anda akan membutuhkannya nanti dalam tutorial.

2. Menginstal library klien

Anda dapat memperoleh Library Klien Google API untuk PHP menggunakan Composer:

composer require google/apiclient:^2.0

3. Menyiapkan contoh

Anda harus membuat dua file:

  • index.php akan menjadi halaman utama yang dikunjungi oleh pengguna.
  • oauth2callback.php akan menangani respons OAuth 2.0

index.php

File ini berisi logika utama untuk melakukan kueri Google Analytics API dan menampilkan hasilnya.

  • Salin atau download kode contoh pertama ke index.php.
  • Ganti nilai VIEW_ID. Anda dapat menggunakan Penjelajah Akun untuk menemukan ID Tampilan.
<?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

File ini menangani respons OAuth 2.0. Salin atau download kode contoh kedua ke 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. Menjalankan contoh

Jalankan contoh dengan server web yang dikonfigurasi untuk menyajikan PHP. Jika menggunakan PHP 5.4 atau yang lebih baru, Anda dapat menggunakan server web pengujian bawaan PHP dengan menjalankan perintah berikut:

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

Kemudian, buka http://localhost:8080 di browser Anda.

Setelah Anda menyelesaikan langkah-langkah ini, contoh akan menghasilkan jumlah sesi selama tujuh hari terakhir untuk tampilan tertentu.