Google Plus SDK不刷新令牌(iOS)

使用Google Plus SDK进行login。 起初一切都很好,但是看起来oauth令牌在大约1个小时之后就会过期。 我正在关注Google网站上的build议和使用情况

 [signIn trySilentAuthentication] 

在viewDidAppear函数中。

我知道令牌已过期,因为我在服务器上使用Oauth并获得了401响应。

另外值得注意的是,如果iPhone / iPad插入屏幕,这不是一个问题。 在这种情况下,应用程序无限期地工作,没有任何问题。

我的Cloud端点上的身份validation失败。 我正在初始化服务如下:

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

此外,如果应用程序有一个过期的令牌,我现在的工作就是通过使用iOS应用程序切换器并再次启动应用程序来closures应用程序。 在令牌到期之前,应用程序将再次运行大约一个小时。

有没有人遇到这个问题? 任何帮助将不胜感激!

我的问题是我为服务设置授权人的地方。 这个代码块只是在第一次调用我的方法时才运行。 来自Java背景,我不知道方法中的静态variables。 现在我明白了!! 只是将setAuthorizer移到块之外,一切正常。

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

通常1小时后的401响应表示刷新访问令牌失败。 我遇到的一个原因是,当您使用已经提供刷新令牌的帐户testing应用程序时会发生这种情况。 刷新令牌只发送一次,因此您的后续令牌授权有可能在3600秒令牌过期后没有刷新令牌,因为在第一次连接时已经给出。 尝试https://accounts.google.com/IssuedAuthSubTokens,然后从此应用中手动撤消对Google +的访问权限,然后重新连接。