iOS 应用程序的 Facebook SSO 问题
Posted
技术标签:
【中文标题】iOS 应用程序的 Facebook SSO 问题【英文标题】:Facebook SSO problems with iOS app 【发布时间】:2011-04-26 10:30:57 【问题描述】:我正在尝试将 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 有什么建议吗?谢谢。
【问题讨论】:
【参考方案1】:您的答案在以下链接中
Does the Facebook ios SDK require the user to authenticate every time they use the app?
【讨论】:
如果它与另一个问题重复,您应该(也)标记它以引起版主注意,说它是重复的。我对 iOS 的 Facebook API 了解不多,无法判断,但您的回答暗示它是重复的......(重复的问题不受欢迎)【参考方案2】:使用扩展权限offline_access时看到日期4001-01-01 00:00:00 +0000。
我遇到了麻烦,因为我将日期转换为“自 1970 年以来的秒数”,就像它在 android Facebook SDK 上所做的那样。如果您使用NSDate
的timeIntervalSince1970
将4001-01-01 转换为秒,您将得到一个负数(-2147483648),所以要小心。
【讨论】:
以上是关于iOS 应用程序的 Facebook SSO 问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 Facebook iOS 应用将 Xamarin 应用与 Facebook SSO 集成
如何使用 facebook ios sdk for iphone 实现单点登录 (SSO)