Я использую гем google-api-client в своем проекте Rails. У меня работают omniauth и devise, а пользователи аутентифицируются через Google.
Я думал, что у меня все идет очень хорошо, до недавнего времени. Я заметил, что мое приложение выдает ошибку, когда оно получает API Календаря Google через час. Срок действия составляет один час с момента аутентификации, и с этого момента я получаю эту ошибку:
Signet::AuthorizationError (Authorization failed. Server message:
{
"error" : "invalid_grant",
"error_description" : "Token has been revoked."
}):
Это отдельно от недопустимых токенов обновления, поскольку у меня есть токен обновления, хранящийся в базе данных. Он отправляет запрос токена обновления, который вызывает эту ошибку выше, с этим кодом:
client = Google::APIClient.new(
:application_name => APP_NAME,
:application_version => APP_VERSION,
)
client.authorization.client_id = CLIENT_ID
client.authorization.client_secret = CLIENT_SECRET
client.authorization.refresh_token = user.auth_refresh_token
token_result = client.authorization.fetch_access_token!
Я был очень осторожен, чтобы не входить и не выходить из своих учетных записей Google, поэтому я не могу понять, почему Google отправил обратно это сообщение. Если я обновлю страницу через 55 минут, все в порядке. Если я обновляю страницу через 1 час, она жалуется на отзыв токена доступа.
У кого-нибудь была эта проблема раньше? Если да, то что вы сделали, чтобы исправить это? Вам нужно было что-то изменить в консоли разработчика Google?