[英]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.