/**
  * Call fetcher to fetch the token.
  *
  * @return string
  */
 private function fetchToken()
 {
     $auth_tokens = $this->fetcher->fetchAuthToken($this->httpHandler);
     if (array_key_exists('access_token', $auth_tokens)) {
         // notify the callback if applicable
         if ($this->tokenCallback) {
             call_user_func($this->tokenCallback, $this->fetcher->getCacheKey(), $auth_tokens['access_token']);
         }
         return $auth_tokens['access_token'];
     }
 }
 /**
  * Updates the request with an Authorization header when auth is 'fetched_auth_token'.
  *
  *   use GuzzleHttp\Client;
  *   use Google\Auth\OAuth2;
  *   use Google\Auth\Subscriber\AuthTokenSubscriber;
  *
  *   $config = [..<oauth config param>.];
  *   $oauth2 = new OAuth2($config)
  *   $subscriber = new AuthTokenSubscriber($oauth2);
  *
  *   $client = new Client([
  *      'base_url' => 'https://www.googleapis.com/taskqueue/v1beta2/projects/',
  *      'defaults' => ['auth' => 'google_auth']
  *   ]);
  *   $client->getEmitter()->attach($subscriber);
  *
  *   $res = $client->get('myproject/taskqueues/myqueue');
  *
  * @param BeforeEvent $event
  */
 public function onBefore(BeforeEvent $event)
 {
     // Requests using "auth"="google_auth" will be authorized.
     $request = $event->getRequest();
     if ($request->getConfig()['auth'] != 'google_auth') {
         return;
     }
     // Fetch the auth token.
     $auth_tokens = $this->fetcher->fetchAuthToken($this->httpHandler);
     if (array_key_exists('access_token', $auth_tokens)) {
         $request->setHeader('Authorization', 'Bearer ' . $auth_tokens['access_token']);
         // notify the callback if applicable
         if ($this->tokenCallback) {
             call_user_func($this->tokenCallback, $this->fetcher->getCacheKey(), $auth_tokens['access_token']);
         }
     }
 }
 /**
  * @return string
  */
 public function getCacheKey()
 {
     return $this->getFullCacheKey($this->fetcher->getCacheKey());
 }