You are here

public function GoogleAnalyticsCounterAuthManager::newGaFeed in Google Analytics Counter 8.3

Instantiate a new GoogleAnalyticsCounterFeed object.

Return value

object GoogleAnalyticsCounterFeed object to authorize access and request data from the Google Analytics Core Reporting API.

Overrides GoogleAnalyticsCounterAuthManagerInterface::newGaFeed

1 call to GoogleAnalyticsCounterAuthManager::newGaFeed()
GoogleAnalyticsCounterAuthManager::getWebPropertiesOptions in src/GoogleAnalyticsCounterAuthManager.php
Get the list of available web properties.

File

src/GoogleAnalyticsCounterAuthManager.php, line 112

Class

GoogleAnalyticsCounterAuthManager
Class GoogleAnalyticsAuthManager.

Namespace

Drupal\google_analytics_counter

Code

public function newGaFeed() {
  $config = $this->config;

  // If the access token is still valid, return an authenticated GAFeed.
  if ($this->state
    ->get('google_analytics_counter.access_token') && time() < $this->state
    ->get('google_analytics_counter.expires_at')) {
    return new GoogleAnalyticsCounterFeed($this->state
      ->get('google_analytics_counter.access_token'));
  }
  elseif ($this->state
    ->get('google_analytics_counter.refresh_token')) {
    $client_id = $config
      ->get('general_settings.client_id');
    $client_secret = $config
      ->get('general_settings.client_secret');
    $refresh_token = $this->state
      ->get('google_analytics_counter.refresh_token');
    try {
      $gac_feed = new GoogleAnalyticsCounterFeed();
      $gac_feed
        ->refreshToken($client_id, $client_secret, $refresh_token);
      $this->state
        ->setMultiple([
        'google_analytics_counter.access_token' => $gac_feed->accessToken,
        'google_analytics_counter.expires_at' => $gac_feed->expiresAt,
      ]);
      return $gac_feed;
    } catch (Exception $e) {
      $this->messenger
        ->addError($this
        ->t('There was an authentication error. Message: %message', [
        '%message' => $e
          ->getMessage(),
      ]));
      return NULL;
    }
  }
  elseif (isset($_GET['code'])) {
    try {
      $gac_feed = new GoogleAnalyticsCounterFeed();
      $gac_feed
        ->finishAuthentication($config
        ->get('general_settings.client_id'), $config
        ->get('general_settings.client_secret'), $config
        ->get('general_settings.redirect_uri'));
      $this->state
        ->setMultiple([
        'google_analytics_counter.access_token' => $gac_feed->accessToken,
        'google_analytics_counter.expires_at' => $gac_feed->expiresAt,
        'google_analytics_counter.refresh_token' => $gac_feed->refreshToken,
      ]);
    } catch (Exception $e) {
      $this->messenger
        ->addError($this
        ->t('There was an authentication error. Message: %message', [
        '%message' => $e
          ->getMessage(),
      ]));
      return NULL;
    }
  }
  return NULL;
}