public function testFileCache() { $this->onlyPhp55AndAbove(); $this->checkServiceAccountCredentials(); $client = new Google_Client(); $client->useApplicationDefaultCredentials(); $client->setScopes(['https://www.googleapis.com/auth/drive.readonly']); // filecache with new cache dir $cache = $this->getCache(sys_get_temp_dir() . '/cloud-samples-tests-php-cache-test/'); $client->setCache($cache); $token1 = null; $client->setTokenCallback(function ($cacheKey, $accessToken) use($cache, &$token1) { $token1 = $accessToken; $cacheItem = $cache->getItem($cacheKey); // expire the item $cacheItem->expiresAt(new DateTime('now -1 second')); $cache->save($cacheItem); $cacheItem2 = $cache->getItem($cacheKey); }); /* Refresh token when expired */ if ($client->isAccessTokenExpired()) { $client->refreshTokenWithAssertion(); } /* Make a service call */ $service = new Google_Service_Drive($client); $files = $service->files->listFiles(); $this->assertInstanceOf('Google_Service_Drive_FileList', $files); sleep(1); // make sure the token expires $client = new Google_Client(); $client->useApplicationDefaultCredentials(); $client->setScopes(['https://www.googleapis.com/auth/drive.readonly']); $client->setCache($cache); $token2 = null; $client->setTokenCallback(function ($cacheKey, $accessToken) use(&$token2) { $token2 = $accessToken; }); /* Make another service call */ $service = new Google_Service_Drive($client); $files = $service->files->listFiles(); $this->assertInstanceOf('Google_Service_Drive_FileList', $files); $this->assertNotEquals($token1, $token2); }