Пример #1
0
 /** @dataProvider provideAuthTokenFetcher */
 public function testGetLastReceivedToken(FetchAuthTokenInterface $fetcher)
 {
     $accessToken = $fetcher->getLastReceivedToken();
     $this->assertNotNull($accessToken);
     $this->assertArrayHasKey('access_token', $accessToken);
     $this->assertArrayHasKey('expires_at', $accessToken);
     $this->assertEquals('xyz', $accessToken['access_token']);
     $this->assertEquals(strtotime('2001'), $accessToken['expires_at']);
 }
 /**
  * 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,
  *       ['prefix' => 'OAuth2::'],
  *       $cache = new Memcache()
  *   );
  *
  *   $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;
     }
     // Use the cached value if its available.
     //
     // TODO: correct caching; update the call to setCachedValue to set the expiry
     // to the value returned with the auth token.
     //
     // TODO: correct caching; enable the cache to be cleared.
     $cached = $this->getCachedValue();
     if (!empty($cached)) {
         $request->setHeader('Authorization', 'Bearer ' . $cached);
         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']);
         $this->setCachedValue($auth_tokens['access_token']);
         // notify the callback if applicable
         if ($this->tokenCallback) {
             call_user_func($this->tokenCallback, $this->getFullCacheKey(), $auth_tokens['access_token']);
         }
     }
 }
 /**
  * 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']);
         }
     }
 }
 /**
  * Determine if token is available in the cache, if not call fetcher to
  * fetch it.
  *
  * @return string
  */
 private function fetchToken()
 {
     // TODO: correct caching; update the call to setCachedValue to set the expiry
     // to the value returned with the auth token.
     //
     // TODO: correct caching; enable the cache to be cleared.
     $cached = $this->getCachedValue();
     if (!empty($cached)) {
         return $cached;
     }
     $auth_tokens = $this->fetcher->fetchAuthToken($this->httpHandler);
     if (array_key_exists('access_token', $auth_tokens)) {
         $this->setCachedValue($auth_tokens['access_token']);
         // notify the callback if applicable
         if ($this->tokenCallback) {
             call_user_func($this->tokenCallback, $this->getFullCacheKey(), $auth_tokens['access_token']);
         }
         return $auth_tokens['access_token'];
     }
 }
 /**
  * @return array|null
  */
 public function getLastReceivedToken()
 {
     return $this->fetcher->getLastReceivedToken();
 }