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 处理登录的主要内容,如果未能解决你的问题,请参考以下文章
使用 facebook SDK for ios 6 实现 Facebook 注销
使用 facebook api for ios sdk 的问题