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 上所做的那样。如果您使用NSDatetimeIntervalSince1970 将4001-01-01 转换为秒,您将得到一个负数(-2147483648),所以要小心。

【讨论】:

以上是关于iOS 应用程序的 Facebook SSO 问题的主要内容,如果未能解决你的问题,请参考以下文章

Facebook SSO IOS 不返回应用

使用 Facebook iOS 应用将 Xamarin 应用与 Facebook SSO 集成

如何使用 facebook ios sdk for iphone 实现单点登录 (SSO)

Facebook iOS - 在 SSO 上禁止应用程序然后卸载应用程序时出错

sso_key 参数无效 iOS Gamemaker

facebook iOS sdk 自定义委托和 SSO 授权