我试图获得简单的当前用户信息并将其作为函数参数返回。从阅读我明白,我需要使用startForMeWithCompletionHandler方法。很好。
在我通过Facebook进行身份验证后,我尝试通过调用startForMeWithCompletionHandler方法来调用API。然而,执行了块,但它从未作为方法返回参数返回。为什么?
这是我要调用的方法:
-(id<FBGraphUser>) getLoggedInUserdata
{
__block id<FBGraphUser> userInfo;
if(FBSession.activeSession.isOpen)
{
NSLog(@"Session is open");
}
[FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id<FBGraphUser> userInfoResult, NSError *error) {
if(FBSession.activeSession.isOpen)
{
if(!error)
{
userInfo = userInfoResult;
}
}
}];
return userInfo;
}
from MainViewController:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.title = @"Facebook Sample app";
httpClient = [[FBCHttpClient alloc] init];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if(FBSession.activeSession.isOpen)
{
id<FBGraphUser> fbGraphUser = httpClient.getLoggedInUserdata;
NSLog(@"%@",[fbGraphUser name]);
}
}
我在成功验证Facebook并且fbsession . activessession . isopen为true后调用它。
我做错了什么?
startForMeWithCompletionHandler方法是异步的,所以无论何时调用它,它都会被调用,但是它不会执行,直到你的代码首先执行完。