Срок действия маркера обновления Google_Client истекает через несколько дней

У меня проблема с маркерами обновления, которые возвращает Google. Я думаю, что они истекают через несколько дней. Документация говорит, что они не делают, если пользователь не делает это вручную.

Вот что я делаю:

Я предлагаю пользователю авторизовать мое приложение с помощью Google_Client

$client = new Google_Client();
$client->setClientId(GOOGLE_CLIENT_ID);
$client->setClientSecret(GOOGLE_CLIENT_SECRET);
$client->setRedirectUri(GOOGLE_REDIRECT_URI);
$client->setScopes(array(GOOGLE_SCOPE_A,'https://www.googleapis.com/auth/userinfo.email'));
$client->setApplicationName(GOOGLE_APPLICATION_NAME);
$client->setAccessType('offline');
$client->setApprovalPrompt('force');

Я храню токен обновления в базе данных, используя

$refreshToken = $client->getRefreshToken();

У меня есть cURL, который запускается каждый день и извлекает некоторые данные из аналитики, затем он подключается с использованием следующего кода:

$client = new Google_Client();
$client->setClientId(GOOGLE_CLIENT_ID);
$client->setClientSecret(GOOGLE_CLIENT_SECRET);
$client->refreshToken($refreshToken);
$client->isAccessTokenExpired() //this returns false;

Все отлично работает первые 15-30 дней. После этого похоже, что токен обновления больше не работает.

$client->isAccessTokenExpired() //this returns true;

и когда я пытаюсь получить данные из аналитики, я получаю исключение Google_Service_Exception с кодом: 401 и сообщением: «Требуется вход в систему»

Затем я предлагаю пользователю снова авторизовать мое приложение, обновить токен обновления, добавив новый в базу данных, и все будет работать, как ожидается, в течение следующих 15-30 дней, пока вышеописанная проблема не возникнет снова.

Кто-нибудь знает, почему это происходит и как я могу предотвратить это?

Спасибо.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]