Ошибка GPPSignIn invalid_grant / Токен был отозван

После этого вопроса: GPP iOS не обновляет токен

Таким образом, я правильно получаю токен обновления, если я использую приложение в течение некоторого времени. Проблема в том, что если я поставлю приложение в фоновый режим на несколько часов (более 3-4 часов, как я заметил), в следующий раз, когда я trySilentAuthentication, оно вернет следующую ошибку:

Error Domain=com.google.HTTPStatus Code=400 
"The operation couldn’t be completed. (com.google.HTTPStatus error 400.)" 
UserInfo=0x7feefbfa4cd0 {  
                         json={ error = "invalid_grant"; 
                         "error_description" = "Token has been revoked."; }

Я должен указать, что никто вручную не отозвал токен или что-либо еще, сделанное вручную.

Что еще более странно, так это то, что иногда после получения этой ошибки, если я завершаю работу приложения, а затем снова открываю его и запускаю trySilentAuthentication, оно работает, и новый токен генерируется правильно, хотя иногда и не работает.

Есть ли что-то еще, что мне нужно сделать, например, снова показать экран согласия? Пользователю было бы очень неприятно видеть этот экран каждый день.

Любая помощь приветствуется.


person Beny Boariu    schedule 04.05.2015    source источник
comment
Я думаю, вам нужно опубликовать некоторый код, прежде чем кто-нибудь сможет помочь вам отладить это. Как часто вы используете токен обновления?   -  person DaImTo    schedule 04.05.2015
comment
Это именно тот код, который вы видите в ссылке поверх моего вопроса, однако вот снова ссылка: stackoverflow.com/questions/29720107/   -  person Beny Boariu    schedule 04.05.2015
comment
Что касается частоты: обычно я вызываю trySilentAuthentication каждый раз, когда пользователь открывает приложение. И работает нормально, независимо от того, сколько раз я открываю приложение. Но если пройдет больше часов, в следующий раз он просто не обновит токен, а выдаст указанную выше ошибку. Я не вижу ничего в документации, чтобы помочь мне с этим. Имея так много проблем с этими токенами, и документация совсем не помогает.   -  person Beny Boariu    schedule 04.05.2015
comment
Пока токен доступа действителен, вы не должны получать новый с токеном обновления, токен доступа действителен около часа. Мне интересно, если вы запрашиваете множество токенов доступа с сервера, это приводит к тому, что он вас отключает. Я никогда не видел эту ошибку раньше. Отзыв токена обычно означает, что пользователь зашел в настройки Google и удалил ваш доступ, но вы сказали, что это не так.   -  person DaImTo    schedule 04.05.2015
comment
Токен, отозванный вручную, определенно не тот случай. Это iOS-приложение. Вы знаете, как часто я должен вызывать trySilentAuthentication? И я сомневаюсь, что это из-за слишком частого запроса токенов. Потому что я могу спрашивать много раз, без проблем, но после паузы в несколько часов я получаю сообщение об ошибке выше. Прямо сейчас я не вызывал trySilentAuthentication с 3 дней назад, и когда сегодня позвонил в первый раз, получил ошибку.   -  person Beny Boariu    schedule 04.05.2015
comment
Это может помочь stackoverflow.com/questions/20741263/   -  person DaImTo    schedule 04.05.2015
comment
Спасибо, я уже читал эту ветку и везде звоню [GPPSignIn sharedInstance]. Так это должно работать, верно?   -  person Beny Boariu    schedule 04.05.2015