IOS6 FB sdk startForMeWithCompletionHandler如何将结果设置为函数返回变量



我试图获得简单的当前用户信息并将其作为函数参数返回。从阅读我明白,我需要使用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方法是异步的,所以无论何时调用它,它都会被调用,但是它不会执行,直到你的代码首先执行完。

最新更新