Пытаюсь разобраться с google api. В качестве авторизации для приложения использую механизм service account. Чтобы получить access_token, сформировал JWT, отправил соответствующий запрос и получил access_token. И вроде бы все заработало, запросы к api удачно делаются. Но этот токен ведь выдается на 3600 секунд. Значит если простой более часа, то токен должен быть обновлен. А у меня вообще БЕЗ токена запросы делаются. Я вручную подменяю набор символов. Не пойму как это работает. Я думал, что нужно каждый запрос делать проверку на свежесть токена и если протух, то снова формировать JWT и получать access_token. Это следует из документации. Кто мне объяснит что я упускаю?
Вот код, который успешно выполняется, но я не могу понять, почему успешно без участия access_token?
Единственное объяснение в моей голове: сервер API запомнил, что user с такими-то credentials access_token получал и мы это помним. Но почему тогда больше 3600 секунд они это помнят.
Если кто понимает, прошу прокомментировать. Спасибо за участие!
require_once __DIR__ . '/vendor/autoload.php';
putenv('GOOGLE_APPLICATION_CREDENTIALS=test-creds.json');
appendDataToTable('Списки!G9', [[4]]); // главный вызов ф-ции
function getClient()
{
$client = new Google\Client();
$client->useApplicationDefaultCredentials();
$client->setScopes('https://www.googleapis.com/auth/spreadsheets');
$client->setAccessType('offline');
return $client;
}
function appendDataToTable($range, $values)
{
$client = getClient();
$service = new Google\Service\Sheets($client);
$spreadsheetId = '*****';
$body = new Google_Service_Sheets_ValueRange(['values' => $values]);
$params = [
'valueInputOption' => 'RAW',
'includeValuesInResponse' => true
];
$response = $service->spreadsheets_values->append($spreadsheetId, $range, $body, $params);
return $response;
}