2

如何将Facebook登录整合到iOS应用中,适用于所有版本?iOS Facebook登录教程

我没有一个完整的解决方案,搜索Google和GitHub几个小时。我还阅读了Facebook上的所有文档,并解析了ios-facebook示例代码。我有一个适用于> = iOS6的工作版本,但低于此值的任何版本都会崩溃(ACAccountStore不存在)。目前我正在使用名为LBFacebook的图书馆进行登录。唯一的缺点是,它不适用于iOS5。

我拉我的头发。 FacebookSDK每隔几周就会更改一次。如果能够一劳永逸,这将是不可思议的。

+3

“所有版本”是什么? iOS版? Facebook的?所有iPhone出货*有史以来*? –

回答

5

Facebook SDK 3.1向后兼容。它试图按以下顺序进行身份验证:

  1. 帐户框架(ACAccount)
  2. 通过Facebook的应用程序(如果已安装)
  3. 通过Web浏览器(老办法)

我可以证实它在旧版iOS版本中可以正常工作。如果您收到ACAccountStore不存在的错误,则表示您的操作有误。从文档:

如果您还没有登录之前,根据您的iOS, 你会看到本机登录模式对话框的版本,被重定向到 的Facebook的iOS或重定向到Facebook在Safari中完成 的认证流程。

请参阅here。他们展示了不同iOS版本的外观。请参阅here

+0

谢谢!我终于能够启动并运行了。这一切都依赖于FBLoginView,直到我清理项目时才出现。 – user2247438

2
NSString *strName= @"Mohit Thatai"; 
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
    [login 
    logInWithReadPermissions: @[@"public_profile", @"email"] 
    handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
     if (error) 
     { 
      NSLog(@"Error"); 
     } 
     else if (result.isCancelled) 
     { 
      NSLog(@"Cancell"); 
     } 
     else 
     { 
    NSLog(@"Login Sucessfull"); 
// Share link text on face book 
     FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init]; 
      [content setContentTitle:@"GPS Tracker"]; 
      [content setContentDescription:[NSString stringWithFormat:@"%@ shared an interesting link\n  This might be interesting to you: GPS Tracker for Kids",strName]]; 
content.contentURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://gpsphonetrackerkids.com"]]; 
      [FBSDKShareDialog showFromViewController:self 
             withContent:content 
              delegate:nil]; 
     } 
    }];