مرحبًا بالإصدار 4 من واجهة برمجة التطبيقات لإعداد التقارير في "إحصاءات Google"، يمكنك البدء باستخدام لغة PHP في تطبيقات الويب

يوضّح هذا البرنامج التعليمي الخطوات المطلوبة للوصول إلى الإصدار 4 من واجهة برمجة التطبيقات لإعداد التقارير في "إحصاءات Google".

1- تفعيل واجهة برمجة التطبيقات

لبدء استخدام الإصدار 4 من واجهة برمجة التطبيقات لإعداد التقارير في "إحصاءات Google"، عليك أولاً استخدام أداة الإعداد التي ترشدك خلال إنشاء مشروع في وحدة تحكّم Google API وتفعيل واجهة برمجة التطبيقات وإنشاء بيانات الاعتماد.

ملاحظة: لإنشاء معرّف عميل على الويب أو عميل تطبيق مثبّت، يجب ضبط اسم منتج في شاشة الموافقة. سيُطلب منك ضبط شاشة الموافقة في حال عدم تنفيذ ذلك.

إنشاء بيانات اعتماد

  • افتح صفحة بيانات الاعتماد.
  • انقر على إنشاء بيانات اعتماد ثم اختر معرِّف عميل OAuth.
  • بالنسبة إلى نوع التطبيق، اختَر تطبيق الويب.
  • أدخِل اسم معرّف العميل للبدء وانقر على إنشاء.
  • يمكنك ترك مصادر JavaScript المعتمَدة فارغة، لن تحتاج إلى هذا البرنامج التعليمي.
  • اضبط معرّفات الموارد المنتظمة (URI) المُعتمَدة لإعادة التوجيه على http://localhost:8080/oauth2callback.php
  • انقر على إنشاء.

من صفحة بيانات الاعتماد انقر على معرِّف العميل الذي تم إنشاؤه حديثًا، ثم انقر على تنزيل JSON وحفظه كـ client_secrets.json؛ ستحتاج إليه لاحقًا في البرنامج التعليمي.

2. تثبيت مكتبة البرامج

يمكنك الحصول على مكتبة عميل "واجهات برمجة تطبيقات Google" للغة PHP باستخدام المؤلف:

composer require google/apiclient:^2.0

3- إعداد النموذج

يجب إنشاء ملفَين:

  • index.php هي الصفحة الرئيسية التي زارها المستخدم.
  • سيعالج oauth2callback.php استجابة OAuth 2.0

index.php

يحتوي هذا الملف على المنطق الرئيسي لطلب البحث في واجهات برمجة تطبيقات "إحصاءات Google" وعرض النتائج.

  • انسخ أو انسخ نموذج الرمز الأول إلى index.php.
  • استبدِل قيمة VIEW_ID. يمكنك استخدام مستكشف الحساب للعثور على رقم تعريف الملف الشخصي.
<?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

يعالج هذا الملف استجابة 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. تنفيذ النموذج

شغّل النموذج باستخدام خادم ويب تم إعداده لعرض لغة PHP. إذا كنت تستخدم الإصدار 5.4 من لغة PHP أو إصدارًا أحدث، يمكنك استخدام خادم الويب التجريبي المُدمج بلغة PHP's من خلال تنفيذ الأمر التالي:

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

بعد ذلك، انتقِل إلى http://localhost:8080 في المتصفّح.

عند الانتهاء من هذه الخطوات، ينتج عن النموذج عدد الجلسات لآخر سبعة أيام في طريقة العرض المحددة.