0

我正在尝试获取简单的当前用户信息并将其作为函数的参数返回。从阅读中我了解到我需要使用 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 为 true 后,我调用它。

我究竟做错了什么?

4

1 回答 1

1

startForMeWithCompletionHandler 方法是异步的,因此无论何时调用它都会调用它,但在您的代码首先执行完之前它不会执行。

于 2013-06-26T15:01:15.447 回答