Отказоустойчивость Google+ Auth (код уже погашен)

В настоящее время я внедряю аутентификацию Google+ на Android с автономным доступом. Это влечет за собой запрос одноразового кода авторизации, который можно отправить на сервер и обменять на токен обновления. Все идет нормально.

Однако представьте, что на сервере произошла ошибка между моментом погашения кода и отправкой пользователю ответа, указывающего, что он прошел аутентификацию. Если затем пользователь повторно запрашивает код аутентификации, Google возвращает тот же код, который был выдан ранее. Когда сервер пытается активировать этот код в Google, возникает ошибка

«Недействительный грант — этот код уже был погашен»

возвращается.

Есть ли способ изящно выйти из такого случая, который не требует от пользователя «повторить попытку позже», когда Google решит выпустить новый код? Я понимаю, что период ожидания для получения нового кода составляет всего 5 или 10 минут, но это все еще не очень приятная ситуация с точки зрения пользователя.


person Levi Botelho    schedule 22.03.2015    source источник
comment
Я столкнулся с той же проблемой, вы нашли решение?!   -  person Moussawi7    schedule 04.05.2015
comment
К сожалению не успел :/.   -  person Levi Botelho    schedule 04.05.2015


Ответы (1)


Вам нужно использовать clearToken(контекстный контекст, токен String).

Если вы получите ответ:

«Недействительный грант — этот код уже был погашен»

Вам нужно передать код аутентификации, который вы использовали, в функцию clearToken(). Это удаляет этот токен из кеша.

Вызовите getToken() еще раз, и он даст вам новый код аутентификации, поэтому вам не придется ждать, пока код обновится сам по себе.

person PriestVallon    schedule 14.05.2015