Facebook SDK for iOS 处理登录

Posted

技术标签:

【中文标题】Facebook SDK for iOS 处理登录【英文标题】:Facebook SDK for iOS handle login 【发布时间】:2015-02-18 00:14:31 【问题描述】:

我将 Facebook SDK for ios 与 parse.com SDK 一起用于我的后端(但这对我的问题并不重要)。

两个 SDK 都工作正常。

当用户第一次打开我的应用程序时(只要他没有登录),就会出现一个模式视图控制器,上面写着“你没有登录等等等等”和 Facebook 登录按钮由SDK。

当用户点击登录按钮时,Facebook 应用程序(或 Safari)打开,您可以使用 Facebook 登录,然后您返回我的应用程序并登录。这也可以正常工作。

那么,例如,当用户现在登录或他在第二天打开应用程序时,我如何检查他是否已登录?我想获取要显示的登录用户的整个新闻提要。

如果我正在使用

FBSession.activeSession().isOpen

它总是错误的,因为在我想知道的时候,会话没有激活。是否有任何通知或事件处理程序能够知道会话何时激活?

这就是我想要的:

当用户打开应用程序(他已登录)时,视图控制器应显示类似“登录到 facebook 并加载您的新闻提要..” 成功登录后,视图应显示最新的,例如来自用户新闻源的 20 个帖子 当用户未登录时,我想用 Facebook 登录按钮显示我的模态视图控制器

我阅读了 Facebook SDK 的文档并在 Google 上进行了很多搜索,但没有回答我的问题。我只想知道如何处理该死的 Facebook 登录。

请帮帮我!

【问题讨论】:

【参考方案1】:

当应用加载时,FB SDK 不会自行加载任何内容。您可以提示它检查用户是否仍连接到您的应用,而无需打开登录对话框。

对于 FB SDK v3.x:

if (!FBSession.activeSession.isOpen) 
    BOOL isLoggedIn = [FBSession openActiveSessionWithAllowLoginUI:NO];

FB SDK 4.x 现在会自行检查,只要您添加 appropriate lines to your app delegate from their documentation.

BOOL isLoggedIn = NO;
if ([FBSDKAccessToken currentAccessToken]) 
    isLoggedIn = YES;
    NSLog(@"facebook already connected");

在我看来,理想情况下,您应该通过将一些信息(例如他们的 FB id)保存到 NSUserDefaults 来跟踪用户之前是否登录过,而不是依赖 Facebook 的 SDK,但这应该可以。

【讨论】:

谢谢,这对我帮助很大!看起来不是很棘手,但它有效:))

以上是关于Facebook SDK for iOS 处理登录的主要内容,如果未能解决你的问题,请参考以下文章

iOS 6 facebook sdk 3.1.1 登录错误

使用 facebook SDK for ios 6 实现 Facebook 注销

Facebook Sdk for ios 发布 - 暗屏

使用 facebook api for ios sdk 的问题

Facebook SDK 3.6 for iOS 设备上的错误 2

Facebook SDK - iOS6 登录弹出窗口无法关闭