Доброго времени суток.
Пишу свой интерфейс для работы с google drive, но меня сильно тормозит работа с клиентом.
Постоянная проблема с токеном — invalid_grant или множество других, связанных с токеном.
$client = new \Google_Client();
$client->setClientId('myid.apps.googleusercontent.com');
$client->setClientSecret('dsafasddadasdadad');
$client->setRedirectUri($redirect_uri);
$client->addScope(\Google_Service_Drive::DRIVE);
$client->setAccessType("offline");
// Запрос на подтверждение работы с Google-диском
if (isset($_REQUEST['code'])) {
$token = $client->authenticate($_REQUEST['code']);
$_SESSION['accessToken'] = $token;
header('Location:' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
} elseif (!isset($_SESSION['accessToken'])) {
header('Location:' . filter_var($client->createAuthUrl(), FILTER_SANITIZE_URL));
}
try {
// Присваиваем защитный токен для работы с Google-диском
$client->setAccessToken($_SESSION['accessToken']);
} catch (\Exception $e) {
die($e->getMessage() . " — " . var_dump($_SESSION));
}
При данной конструкции периодически выбрасывает ошибку с токенами, что они устарели или некорректны (к сожалению листинг ошибки не сохранил, нужно ждать чтобы просрочились токены).
При использовании конструкции $client->isAccessTokenExpired() и $client->getRefreshToken() (брал из доков по стандарту), периодически возникает ошибка invalid_grant, Bad Request
Кто писал подобные конструкции для множественного числа пользователей? Уже неделю пытаю эту проблему перерыл все англоязычные ресурсы, не нашел вменяемого примера с $client->isAccessTokenExpired() и $client->getRefreshToken() для приложения