在IOS上查看Facebook Connect Session

时间:2011-01-04 17:22:21

标签: cocoa-touch ios facebook

使用新的Facebook库,FBSession对象消失了。 如何在没有提示进行safari或uiwebview的情况下启动应用程序时,如何检查用户是否在他的设备上有有效的会话?

[facebook isSessionValid]方法适用于acccessToken,但当应用程序从safari(或内联uiwebview)返回时设置了accessToken。

是否可以使用Cookie检查会话?

2 个答案:

答案 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的原因)。