Использование клиента Google API PHP с учетной записью службы, он возвращает массив вроде следующего:Можно ли повторно использовать токен доступа к учетной записи службы Google?
array (size=3)
'access_token' => string '...TOKEN...' (length=127)
'token_type' => string 'Bearer' (length=6)
'expires_in' => int 3600
это лучше практика, чтобы создать новый маркер запроса на каждой странице? Кажется расточительным это делать, когда каждый токен действителен в течение одного часа. Но поскольку токен не включает значение created
или значение token_id
, встроенный метод isAccessTokenExpired()
всегда будет возвращать true
, что означает, что он всегда истек.
Я вижу несколько вариантов повторного использования и тот же маркер:
Вариант 1: Когда маркер создается с помощью fetchAccessTokenWithAssertion()
, можно вручную добавить значение created
в маркере массив с time()
в качестве значения. Затем сохраните это для сеанса/базы данных, а затем, когда вызывается isAccessTokenExpired
, оно будет иметь это поле для проверки.
Вариант 2: сохранить токен в сеанс/базу данных вместе с временной меткой, срок действия которой истек (time() + $token['expires_in']
), а затем на последующих представлениях я могу выполнить свои собственные вычисления, чтобы убедиться, что токен все еще находится в допустимом периоде времени. Это кажется немного странным, хотя, поскольку я не могу быть полностью уверен, что Google не отозвал токен или что-нибудь смешное.
Вариант 3: Вызвать метод, который использует токен доступа и проверяет его ответ. Если вызов преуспел, то токен доступа должен быть хорошим, если нет, то я могу пойти вперед и попросить новый. Но какой метод я мог бы назвать? Тот, кому нужны только самые основные разрешения, будет хорошим.
спасибо.
Спасибо за ваш ответ и подтверждающие мои мысли @sammitch. Именно это я и решил сделать сейчас. Я просто сохраняю токен вместе с истечением срока в сеансе PHP. – Corey