שלום Analytics API: התחלה מהירה של PHP לאפליקציות אינטרנט

במדריך הזה מפורטים השלבים הנדרשים כדי לגשת לחשבון Google Analytics, ליצור שאילתות בממשקי API של Analytics, לטפל בתשובות ל-API ולפלט את התוצאות. במדריך הזה נעשה שימוש ב-Core Reporting API v3.0, ב-Management API v3.0 וב-OAuth2.0.

שלב 1: מפעילים את Analytics API

כדי להתחיל להשתמש ב-Google Analytics API, צריך קודם להשתמש בכלי ההגדרה, שכולל הנחיות ליצירת פרויקט ב-Google API Console, להפעלת ה-API וליצירת פרטי כניסה.

יצירת מזהה לקוח

מדף פרטי הכניסה:

  1. לוחצים על יצירת פרטי כניסה ובוחרים באפשרות מזהה לקוח OAuth.
  2. בחר אפליקציית אינטרנט עבור סוג אפליקציה.
  3. נותנים שם לפרטי הכניסה.
  4. יש להשאיר את מודעות ה-JavaScript המאושרות ריקות. אין צורך בהן עבור המדריך הזה.
  5. יש להגדיר את URIs של הפניה מחדש שאושרו בתור http://localhost:8080/oauth2callback.php
  6. לוחצים על Create.

בוחרים את פרטי הכניסה שיצרת הרגע ולוחצים על הורדת JSON. שומרים את הקובץ שהורדתם client_secrets.json. צריך אותו מאוחר יותר במדריך.

שלב 2: מתקינים את ספריית הלקוחות של Google

אפשר להוריד את ספריית הלקוח של Google APIs ל-PHP ולהוריד את הגרסה או להשתמש ב- מלחין:

composer require google/apiclient:^2.0

שלב 3: הגדרת הדוגמה

יהיה עליך ליצור שני קבצים:

  1. index.php יהיה הדף הראשי שבו המשתמש יבקר.
  2. האפליקציה oauth2callback.php תטפל ב תגובה של OAuth 2.0.

index.php

קובץ זה מכיל את הלוגיקה העיקרית לשליחת שאילתות בממשקי API של Google Analytics ולהצגת התוצאות. מעתיקים או מורידים את קוד הדוגמה הראשון אל 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

הקובץ הזה מטפל ב תגובת OAuth 2.0. מעתיקים או מורידים את הקוד לדוגמה השני אל 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: הרצת הדגימה

לאחר הפעלת ה-API של Analytics, התקנת ספריית הלקוחות של Google APIs ב-PHP, והגדרת קוד המקור לדוגמה שהדגימה מוכנה להפעלה.

הרצת הדגימה באמצעות שרת אינטרנט המוגדר לשרת PHP. אם נעשה שימוש ב-PHP 5.4 ואילך, אפשר להשתמש בשרת האינטרנט המובנה של PHP&#39 על ידי ביצוע הפקודה הבאה:

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

לאחר מכן, נכנסים לכתובת http://localhost:8080 בדפדפן.

לאחר סיום השלבים האלה, הדגימה מפיקה את השם של התצוגה המפורטת (הפרופיל) הראשונה של המשתמש המורשה ב-Google Analytics ואת מספר הביקורים בשבעת הימים האחרונים.

באמצעות אובייקט השירות המורשה של Analytics אפשר עכשיו להריץ דוגמאות קוד שנמצאות במסמכי התיעוד של Management API. לדוגמה, אפשר לנסות לשנות את הקוד כדי להשתמש בשיטה accountSummaries.list.