Използвам google-api-client gem в моя Rails проект. Имам работещи omniauth и devise и имам удостоверяване на потребителите чрез Google.
Мислех, че всичко върви много добре доскоро. Забелязах, че приложението ми ще изведе грешка, когато извлече API на Google Calendar след един час. Изтичането е един час от времето за удостоверяване и оттогава получавам тази грешка:
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?