'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 | 
|---|
