繁体   English   中英

Objective-C Facebook使用SDK 4.0.1登录

[英]Objective-C Facebook login with SDK 4.0.1

我刚刚将我的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的等效功能吗?

谢谢你的帮助!


编辑:

我rezlied我可以使用该功能:

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

}

但我想我也应该给我的控制器添加一个代表,我不知道怎么...这个有什么帮助? 我是朝着正确的方向吗?

再次感谢 !

制作一个自定义方法并将结果输入其中

-(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];
    }
}

最后解决方案就在这里: FBSDKCoreKit的Facebook iOS8 SDK构建模块错误

谢谢大家的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM