很遗憾,Facebook SDK不会自动为我们处理它。除了构建它到SDK自己,最简单的方法是这样:
每次分配_facebook时间:
_facebook = [[Facebook alloc] initWithAppId:@"SuperDuperAppID"];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [prefs stringForKey:@"facebook-accessToken"];
NSString *expirationDate = [prefs stringForKey:@"facebook-expirationDate"];
_facebook.accessToken = accessToken;
_facebook.expirationDate = expirationDate;
如果你从来没有在保存NSUserDefaults的东西,然后零值将被设置。什么都没有发生。否则,将设置真值,并且[_facebook isSessionValid];
应该返回TRUE,表示良好的值。继续进行Facebook SDK调用,就好像他们已经登录(他们是)。如果为假,请致电
[facebook authorize:permissions delegate:self];
照常。
然后确保支持以下Facebook的委托方法:
- (void)fbDidLogin {
NSString *accessToken = _facebook.accessToken;
NSString *expirationDate = _facebook.expirationDate;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:accessToken forKey:@"facebook-accessToken"];
[prefs expirationDate forKey:@"facebook-expirationDate"];
[prefs synchronize];
}
我在我的应用程序使用此代码,它完美的作品。我从内存中完成了这个工作,所以如果在复制和粘贴时不起作用,我表示歉意。某处可能有错误输入,加上不正确的内存管理。不要忘记,除非获得脱机权限,否则访问令牌会过期。在任何情况下,上面的代码处理一切。
你我必须自己保存accessToken和expirationDate。检查我的答案的代码。 – 2011-04-21 19:54:50