Xin chào Analytics Reporting API phiên bản 4; bắt đầu nhanh bằng PHP cho các ứng dụng web

Hướng dẫn này sẽ trình bày các bước bắt buộc để truy cập vào API Báo cáo Analytics phiên bản 4.

1. Bật API

Để bắt đầu sử dụng API Báo cáo Analytics phiên bản 4, trước tiên, bạn cần sử dụng công cụ thiết lập. Công cụ này sẽ hướng dẫn bạn tạo dự án trong Bảng điều khiển API của Google, bật API và tạo thông tin đăng nhập.

Lưu ý: Để tạo Mã ứng dụng web hoặc Ứng dụng đã cài đặt, bạn cần đặt tên sản phẩm trong màn hình đồng ý. Nếu chưa thực hiện, bạn sẽ thấy lời nhắc Định cấu hình màn hình đồng ý.

Tạo thông tin đăng nhập

  • Mở trang Thông tin xác thực.
  • Nhấp vào Tạo thông tin xác thực rồi chọn Mã ứng dụng khách OAuth
  • Đối với Application type (Loại ứng dụng), hãy chọn Web application (Ứng dụng web).
  • Đặt tên cho mã ứng dụng khách là quickstart rồi nhấp vào quickstart.
  • Để trống Nguồn gốc JavaScript được phép, việc này không cần thiết cho hướng dẫn này.
  • Đặt URI chuyển hướng được ủy quyền thành http://localhost:8080/oauth2callback.php
  • Nhấp vào Tạo.

Trên trang Thông tin xác thực, hãy nhấp vào mã ứng dụng khách mới tạo rồi nhấp vào Tải JSON xuống rồi lưu dưới dạng client_secrets.json. Bạn sẽ cần đến mã này trong phần hướng dẫn sau.

2. Cài đặt thư viện ứng dụng

Bạn có thể lấy Thư viện ứng dụng API của Google dành cho PHP bằng Composer:

composer require google/apiclient:^2.0

3. Thiết lập mẫu

Bạn cần tạo 2 tệp:

index.php

Tệp này chứa logic chính để truy vấn các API Google Analytics và hiển thị kết quả.

  • Sao chép hoặc tải mã mẫu đầu tiên xuống index.php.
  • Thay thế giá trị của VIEW_ID. Bạn có thể sử dụng Trình khám phá tài khoản để tìm Mã chế độ xem.
<?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

Tệp này xử lý phản hồi OAuth 2.0. Sao chép hoặc tải mã mẫu thứ hai xuống 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. Chạy mẫu

Chạy mẫu bằng máy chủ web được định cấu hình để phân phát PHP. Nếu sử dụng phiên bản PHP 5.4 trở lên, bạn có thể sử dụng máy chủ web kiểm thử tích hợp sẵn của PHP bằng cách thực thi lệnh sau:

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

Sau đó, hãy truy cập vào http://localhost:8080 trong trình duyệt.

Khi bạn hoàn thành các bước này, mẫu sẽ xuất ra số phiên trong 7 ngày qua cho chế độ xem đã cho.