iOS应用程序的Facebook SSO问题

时间:2011-04-26 10:30:58

标签: iphone ios facebook

我正在尝试将Facebook集成到我的应用程序中,我已经实现了SSO功能,但是我遇到了一些障碍,一旦我退出应用程序,我就无法恢复用户的会话。我存储了令牌和失效日期,如下所示:

-(void)fbDidLogin {
NSString *tokenString = [[self facebook] accessToken];
NSDate * expirationDate = [[self facebook] expirationDate];

[[NSUserDefaults standardUserDefaults] setValue: tokenString forKey:@"FacebookToken"];
[[NSUserDefaults standardUserDefaults] setObject: expirationDate forKey:@"FacebookExpirationDate"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"Login");

}

这是成功登录时调用的委托方法。

并恢复会话:

  NSString *tokenString = [[NSUserDefaults standardUserDefaults] stringForKey:@"FacebookToken"];    
NSDate *expDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"FacebookExpirationDate"];
if (tokenString != nil && expDate != nil)
{
    [[facebookFetcher facebook]setAccessToken:tokenString];
    [[facebookFetcher facebook] setExpirationDate:expDate];
}
if ([[facebookFetcher facebook]  isSessionValid])
{
    NSLog(@"YES");
}
else 
{
    NSLog(@"Bummer");
}

我已经尝试过多种方式解决问题但没有运气。我注意到的一件事是有效期似乎有点奇怪: 4001-01-01 00:00:00 +0000 有什么建议吗?谢谢。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

使用扩展权限 offline_access 时,会看到 4001-01-01 00:00:00 +0000 的日期。

我遇到了麻烦,因为我将日期转换为“自1970年以来的秒数”,就像在Android Facebook SDK上完成的那样。如果您使用NSDate的{​​{1}}将4001-01-01转换为秒数,则会得到一个负数(-2147483648),因此请注意。