Он работает отлично, но мне всегда нужно (несколько раз в день) заново генерировать новый токен доступа, чтобы предоставить доступ к моему сценарию в почтовый ящик, почему?
Токены доступа действует только в течение одного часа, это стандартно для Oauth. Вы запрашиваете автономный доступ, поэтому у вас есть токен refre sh, который можно использовать для запроса нового токена доступа с сервера аутентификации.
Я указал «Подтверждение утверждения» на «force», которое должно работать вечно.
Если вы включите в свой запрос approval Prompt on "force"
, это заставит пользователя снова войти в систему и дать согласие вашему приложению на область действия. Я понятия не имею, откуда у вас мысль, что это заставит его работать вечно.
Oauth2
Вы используете oauth2, токены доступа истекают через один час, при использовании автономного доступа вы получите refre sh токен, который вы можете сохранить и использовать для запроса нового токена доступа, когда истекает срок действия вашего токена доступа
Похоже, вы уже реализовали это. Если он не работает, вам кажется, что вы проверяете, что код был запущен и вы не потеряли токен refre sh каким-либо образом.
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
храните ссылку sh token
Я не могу найти в вашем коде, что вы сохраняете ссылку sh токен Когда вы аутентифицируете пользователя в первый раз. Вы получите refre sh токен, вы должны сохранить его где-нибудь в файле, а затем использовать его для создания нового токена доступа при следующем запуске скрипта
$client->fetchAccessTokenWithRefreshToken("TokenFromFile");
refre sh токен возвращается только в первый раз, когда пользователь аутентифицирует ваше приложение или когда вы добавляете запрос подтверждения. Не должно быть никаких причин перезаписывать этот токен, если вы не использовали его более шести месяцев.