Objective-C Facebook使用SDK 4.0.1登录

时间:2015-04-22 02:52:03

标签: ios facebook facebook-graph-api login

我刚刚将我的Objective-C代码升级到最新的Facebook SDK 4.0.1,我无法理解登录序列中缺少的内容。 我完全按照指南进行操作,登录对我有用,但我唯一的问题是我不知道如何对登录做出反应。

所以我试图做的是,一旦Facebook登录成功,我想获取他的详细信息,现在由于某种原因我无法找到如何做到这一点。

我读到我应该在viewDidLoad中添加以下代码:

if ([FBSDKAccessToken currentAccessToken]) {
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
         if (!error) {
             NSLog(@"fetched user:%@", result);
         }
     }];
}

但是,当Facebook登录成功完成时,此代码永远不会被执行。

当我以前使用FBLoginView时,我使用下面的代码来获取用户的详细信息:

- (void)loginViewFetchedUserInfo:(FBSDKLoginManager *)loginView
                        user:(FBSDKProfile*)user {
NSLog(@"User Details");}

我可以使用新SDK的等效功能吗?

感谢您的帮助!


编辑:

我说我可以使用这个功能:

    - (void)  loginButton:(FBSDKLoginButton *)loginButton
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
                error:(NSError *)error{
    NSLog(@"LOGGED IN TO FACEBOOK");

}

但我想我还应该给我的控制器添加一个代表,我不确定如何...对这个有什么帮助?我正朝着正确的方向前进吗?

再次感谢!

2 个答案:

答案 0 :(得分:3)

制作自定义方法并将结果输入

-(void)fetchUserInfo {
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
         if (!error) {
             NSLog(@"fetched user:%@", result);
         }
     }];
}

如果登录成功,您可以调用该功能。

- (void)  loginButton:(FBSDKLoginButton *)loginButton
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
                error:(NSError *)error{
    NSLog(@"LOGGED IN TO FACEBOOK");
    [self fetchUserInfo];
}

并在你的viewDidLoad方法

 - (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib

    if ([FBSDKAccessToken currentAccessToken]) {
        NSLog(@"Token is available");
        [self fetchUserInfo];
    } else {
    FBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init];
    loginView.readPermissions =  @[@"email"];
    loginView.frame = CGRectMake(100, 150, 100, 40);
    loginView.delegate = self;
    [self.view addSubview:loginView];
    }
}

答案 1 :(得分:0)

最后解决方案在这里: Facebook iOS8 SDK build module error for FBSDKCoreKit

感谢大家的帮助!