1

Использование Google Plus SDK для входа. Сначала все работает отлично, но кажется, что токен oauth истекает примерно через 1 час. Я следую recommendations on Google's site и используяGoogle Plus SDK не обновляет токен (iOS)

[signIn trySilentAuthentication] 

в функции viewDidAppear.

Я знаю, что токен истек, потому что я использую Oauth на моем сервере и получаю ответ 401.

Также стоит отметить, что это не проблема, если iPhone/iPad остается включенным с включенным экраном. В этом случае приложение работает бессрочно без каких-либо проблем.

Аутентификация завершается с ошибкой на моей конечной точке Cloud. Я инициализация службы, как показано ниже:

static GTLService *service = nil; 

if (!service) { 
    service = [[GTLServiceMyModel alloc] init]; 
    service.retryEnabled = YES; 
    [service setAuthorizer: [GPPSignIn sharedInstance].authentication]; 
} 

Кроме того, если приложение имеет просроченный токен работа вокруг меня прямо сейчас, чтобы закрыть приложение, используя приложение переключатель и запуск приложения IOS снова. Затем приложение снова будет работать примерно за час до истечения срока действия токена.

Кто-нибудь сталкивался с этой проблемой? Любая помощь была бы высоко оценена!

ответ

1

Моя проблема была в том, где я устанавливал авторизатор для обслуживания. Этот кодовый блок только запускался при первом вызове моего метода. Исходя из фона Java, я не разбирался в статических переменных в методах. Теперь я знаю!! Просто переместил setAuthorizer к вне блока, и все работает.

static GTLService *service = nil; 
if (!service) { 
    service = [[GTLServiceMyModel alloc] init]; 
    service.retryEnabled = YES; 
    [service setAuthorizer: [GPPSignIn sharedInstance].authentication]; 
} 
+2

Этот фрагмент кода идентичен тому, который указан в вашем вопросе? –

+0

@Patrick Можете ли вы добавить более подробную информацию о том, как вы это исправили? У меня такая же проблема, и я не могу понять, исправили ли вы это на стороне iOS или на стороне сервера? –

0

Обычно ответ 401 через 1 час указывает на потерю токена доступа. Одна из причин, по которой я столкнулся, - это когда вы тестируете приложение с учетной записью, которая уже дала токен обновления. Токен обновления выдается только один раз, поэтому есть вероятность, что у вашего последующего гранта токена не будет токена обновления, который будет использоваться после истечения срока годности 3600 секунд, поскольку он уже был указан при первом подключении. Попробуйте https://accounts.google.com/IssuedAuthSubTokens и вручную отмените доступ к Google + из этого приложения и снова подключитесь.

+0

Удивительно, что если я перезапущу приложение, он отлично работает еще на час, а иногда и дольше. Кроме того, если приложение осталось на iPad и заряжается, у него никогда не будет проблемы – Patrick

Смежные вопросы