使用新的Facebook库,FBSession对象消失了。 如何在没有提示进行safari或uiwebview的情况下启动应用程序时,如何检查用户是否在他的设备上有有效的会话?
[facebook isSessionValid]方法适用于acccessToken,但当应用程序从safari(或内联uiwebview)返回时设置了accessToken。
是否可以使用Cookie检查会话?
答案 0 :(得分:12)
成功登录后,您希望保存访问令牌和到期日期,如下所示:
[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"ExpirationDate"];
[[NSUserDefaults standardUserDefaults] synchronize];
然后,当您加载应用程序时,您想要检查是否存在已保存的令牌,如下所示:
_facebook = [[Facebook alloc] initWithAppId:@"[app_id]"];
_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"];
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"];
if (![_facebook isSessionValid]) {
[_facebook authorize:_permissions delegate:self];
}
else {
[_facebook requestWithGraphPath:@"me" andDelegate:self];
}
希望这有帮助!
答案 1 :(得分:0)
我很确定它应该自动检查用户是否已登录,通过safari或Facebook iPhone应用程序。如果用户未登录,则会提示使用上述某个应用程序(如果未安装FB应用程序,则默认为safari,这就是模拟器在safari中打开FB的原因)。