Facebook SDK for iOS处理登录

问题描述:

我正在为我的后端使用适用于iOS的Facebook SDK以及parse.com SDK(但这对我的问题并不重要)。Facebook SDK for iOS处理登录

这两个SDK都正常工作。

当用户第一次打开我的应用程序(只要他没有登录),将出现一个模式视图控制器,其中显示“你没有登录等等”以及由Facebook提供的登录按钮SDK。

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

因此,当用户现在登录或他在第二天打开应用程序时,我如何检查他是否已登录?我想获取登录用户的全部新闻提要以显示。

如果我使用

FBSession.activeSession().isOpen 

它总是假的,因为当时我想知道,会话处于非活动状态。是否有任何通知或事件处理程序能够了解会话何时激活?

这就是我想要的:

  • 当用户打开应用程序(他登录)视图控制器应该这样说:“登录到Facebook和加载你的新闻源..
  • 登录成功后,视图应显示最新的例如从用户的新闻订阅20个职位
  • 在不登录的用户,我想告诉我的模态视图控制器与Facebook的登录按钮

我读了Facebook SDK的文档和搜索的在谷歌很多,但没有回答我的问题。我只是想知道如何处理该死的Facebook登录。

请帮帮我!

当应用程序加载时,FB SDK不会自行加载任何东西。您可以提示它检查用户是否仍然连接到您的应用程序,而无需启动登录对话框。

对于FB SDK 3.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,但这应该起作用。

+0

明天我会试试,谢谢! – beeef 2015-02-18 00:30:43

+0

谢谢,这真的帮了我很多!似乎不是很棘手,但它工作:)) – beeef 2015-02-18 13:59:15