我正在尝试获取简单的当前用户信息并将其作为参数从函数返回。从阅读中我了解到我需要使用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;
}
来自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.activeSession.isOpen为真。
我做错了什么?
答案 0 :(得分:1)
startForMeWithCompletionHandler方法是异步的,因此无论何时调用它都会被调用,但是在代码完成首先执行之前它将不会执行。