@tzn

Почему не обновляет токен Google API?

Доброго времени суток.
Развенул апишку гугла. Запускаю в консоли пхп скрипт с апихой, выдает ссылку на авторизацию - перехожу, разрешаю все аппке гугла, получаю в адресной строке свой код и создает файл toketn.json - тут вообще все без проблем.
Но спустя неделю токен умирает и не обновляется сам. Почему так? Что нужно сделать?

function getClient()
{
    $client = new Google_Client();
    $client->setApplicationName('Google Sheets API PHP Quickstart');
    $client->setScopes(Google_Service_Sheets::SPREADSHEETS);
    $client->setAuthConfig('credentials.json');
    $client->setAccessType('offline');
    $client->setPrompt('select_account consent');

    $tokenPath = 'token.json';
    if (file_exists($tokenPath)) {
        $accessToken = json_decode(file_get_contents($tokenPath), true);
        $client->setAccessToken($accessToken);
    }


    if ($client->isAccessTokenExpired()) {
        if ($client->getRefreshToken()) {
            $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
        } else {
            $authUrl = $client->createAuthUrl();
            printf("Open the following link in your browser:\n%s\n", $authUrl);
            print 'Enter verification code: ';
            $authCode = trim(fgets(STDIN));

            $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
            $client->setAccessToken($accessToken);

            if (array_key_exists('error', $accessToken)) {
                throw new Exception(join(', ', $accessToken));
            }
        }
        if (!file_exists(dirname($tokenPath))) {
            mkdir(dirname($tokenPath), 0700, true);
        }
        file_put_contents($tokenPath, json_encode($client->getAccessToken()));
    }
    return $client;
}
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Sheets
Google Products Expert
Проверьте, как вы сохраняете токен для обновления, он должен быть строкой без экранирующих символов

1/xxxxxxxxxxxxxxx-ZZZ_yyyyyyyyyyyyy

а не

1\/xxxxxxxxxxxxxxx-ZZZ_yyyyyyyyyyyyy
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы