Я пытаюсь использовать Google API (PHP) для ежедневной синхронизации между системным календарем и календарями Google. Я хочу, чтобы системный пользователь имел возможность настроить доступ к своему календарю один раз из системы, а затем система может синхронизировать календари каждый день с помощью задания cron.
Мне удалось заставить весь процесс работать, от авторизации доступа к синхронизации календарей, но я застрял с истечением срока действия токена.
Как я думал, что это сработало в v3, старый токен будет действовать как токен обновления. Итак, как только пользователь предоставил авторизацию, мне просто нужно передать старый токен в Google, и это позволит мне запустить синхронизацию.
Кажется, что это работает, пока я нахожусь в течение 1 часа времени первоначального токена. Пройдя час, он перестает работать, и мне нужно, чтобы пользователь снова разрешил доступ.
Есть ли способ заставить пользователя авторизовать доступ один раз, а затем синхронизировать календари один раз в день, если пользователь не должен снова разрешать доступ?
Благодаря!
Ну, во время авторизации с Google вы получите токен, срок действия которого истекает через 3600 секунд или один час, и это нормально, истекло. Поэтому вам нужно использовать токен обновления, чтобы получить новый рабочий токен.
Вот шаги, которые вам нужны:
$token = $client->getAccessToken(); $authObj = json_decode($token); if(isset($authObj->refresh_token)) { save_refresh_token($authObj->refresh_token); }
Важно сохранить этот refresh_token, после чего вы можете обновить его с помощью
$client->refreshToken($your_saved_refresh_token);
А затем установите новый токен доступа на сеанс:
$_SESSION['access_token'] = $client->getAccessToken();
Для получения дополнительной информации проверьте этот вопрос .