我正在尝试将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 有什么建议吗?谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
使用扩展权限 offline_access 时,会看到 4001-01-01 00:00:00 +0000 的日期。
我遇到了麻烦,因为我将日期转换为“自1970年以来的秒数”,就像在Android Facebook SDK上完成的那样。如果您使用NSDate
的{{1}}将4001-01-01转换为秒数,则会得到一个负数(-2147483648),因此请注意。