'Google Analytics, display real time php

I have queries working nicely, but how do I include real-time data?

This is my current code:

  <?php
  // Load the Google API PHP Client Library.
require_once 'google-client/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('google-client/src/Google/client_secret.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'] . '/acp/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:146790870',
        '2016-11-01',
        'today',
        'ga:pageviews, ga:percentNewSessions');

  return  $analytics->data_realtime->get(
    'ga:146790870',
    'rt:activeUsers',
    $optParams);

  }
  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();
      $pageviews = $rows[0][0];
      $percentNewSessions = $rows[0][1];

      // Print the results.
      echo "<div class='col s12 m6 l3' style='text-align:center;'>
      <div class='card green '>
            <div class='card-content white-text'>
              <span class='card-title' style='font-size: 1.2rem;'>Total Website Visitors</span>
              <p style=' margin: 0.2rem 0 0.2rem 0;font-size: 1.8rem; font-weight: bold;'>$pageviews</p>
              <p style=' color: white;font-size:1.0rem; font-weight: bold;'>" . (round($percentNewSessions)) ." % New Visitors</p>
            </div>
            <div class='card-action  green darken-2'>
            </div>
          </div>
          </div>";
    } else {
      echo "<div class='col s12 m6 l3' style='text-align:center;'>
      <div class='card green '>
            <div class='card-content white-text'>
              <span class='card-title' style='font-size: 1.2rem;'>Total Website Visitors</span>
              <p style=' margin: 0.2rem 0 0.2rem 0;font-size: 1.8rem; font-weight: bold;'>Error: No Data</p>
            </div>
            <div class='card-action  green darken-2'>
            </div>
          </div>
          </div>";
    }
  }
  ?>

I have it made so it also gets real-time data using this: (you can see it above too)

  return  $analytics->data_realtime->get(
    'ga:146790870',
    'rt:activeUsers',
    $optParams);

So how do I make it so it also echos the real-time data, so I can display it?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source