我刚刚将我的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");
}
但我想我还应该给我的控制器添加一个代表,我不确定如何...对这个有什么帮助?我正朝着正确的方向前进吗?
再次感谢!
答案 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
感谢大家的帮助!