/** @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(); }