ios - 适用于 iOS 的 Facebook SDK 处理登录

标签 ios xcode facebook swift facebook-ios-sdk

我在后端使用 Facebook SDK for iOS 和 parse.com SDK(但这对我的问题并不重要)。

两个 SDK 都正常工作。

当用户第一次打开我的应用程序时(只要他没有登录),会出现一个模态视图 Controller ,上面写着“你还没有登录等等”和 Facebook 登录按钮开发工具包。

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

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

如果我正在使用

FBSession.activeSession().isOpen

它总是错误的,因为当时我想知道, session 不活跃。是否有任何通知或事件处理程序能够知道 session 何时激活?

这就是我想要的:

  • 当用户打开应用程序(他已登录)时, View Controller 应该说“正在登录 facebook 并加载您的新闻提要..
  • 成功登录后, View 应显示最新的,例如来自用户动态消息的 20 篇帖子
  • 当用户未登录时,我想显示带有 Facebook 登录按钮的模态视图 Controller

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

请帮帮我!

最佳答案

应用加载时,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,但这应该有效。

关于ios - 适用于 iOS 的 Facebook SDK 处理登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28573687/

相关文章:

facebook - type=facebook 中页面的空结果

ios - 如何在特定区域重新着色图像?

iphone - NSMutableArray 不更新

ios - Swift - 如何将输入数据保存到 Core Data 中?

ios - 为什么创建非 Controller 文件时默认没有@interface?

iOS:通过应用程序登录 Facebook

ios - 在 Objective-C 中仅从 <div> 获取文本和图像

ios - EKEventEditViewController 打开速度非常慢

ios - 对于SOAP xml解析哪个框架更好(iOS swift)

c# - 来自 C# 应用程序的 Facebook Fanpage Wallposting