使用Google Plus SDK
登录。一开始一切都很好,但似乎oauth令牌在大约1小时后到期。我正在关注recommendations on Google's site并使用
[signIn trySilentAuthentication]
在viewDidAppear函数中。
我知道令牌已过期,因为我在服务器上使用Oauth并获得401响应。
另外值得注意的是,如果在屏幕上打开iPhone / iPad,这不是问题。在这种情况下,应用程序无限期地工作,没有任何问题。
我的Cloud Endpoint上的身份验证失败。我正在初始化服务如下:
static GTLService *service = nil;
if (!service) {
service = [[GTLServiceMyModel alloc] init];
service.retryEnabled = YES;
[service setAuthorizer: [GPPSignIn sharedInstance].authentication];
}
此外,如果应用程序有过期令牌,我现在的工作就是通过使用iOS应用程序切换器关闭应用程序并再次启动应用程序。然后,应用程序将在令牌过期前再次使用约一小时。
有没有人遇到过这个问题?任何帮助都会非常感激!
答案 0 :(得分:1)
我的问题是我在为服务设置授权程序。这个代码块只在第一次调用我的方法时运行。来自Java背景我对方法中的静态变量并不了解。现在我知道了!!刚刚将setAuthorizer移到了块之外,一切正常。
static GTLService *service = nil;
if (!service) {
service = [[GTLServiceMyModel alloc] init];
service.retryEnabled = YES;
[service setAuthorizer: [GPPSignIn sharedInstance].authentication];
}
答案 1 :(得分:0)
通常,1小时后的401响应表示刷新访问令牌失败。我遇到的一个原因是,当您使用已经提供刷新令牌的帐户测试应用时会发生这种情况。刷新令牌仅发出一次,因此您的后续令牌授权可能在3600秒令牌到期后没有使用刷新令牌,因为它已在您第一次连接时使用。尝试https://accounts.google.com/IssuedAuthSubTokens并从此应用手动撤消对google +的访问权限并重新连接。