2

我正在使用 FBFriendPickerViewController 在用户登录后加载朋友。但是,正在加载一个空的表视图。来自 fb 的用户的朋友没有出现。这是代码。

- (IBAction)inviteButtonTouchHandler:(id)sender {
        if (!_friendPickerController) {
            _friendPickerController = [[FBFriendPickerViewController alloc] initWithNibName:nil bundle:nil];
            _friendPickerController.delegate = self;
            _friendPickerController.title = @"Select friends";
            _friendPickerController.allowsMultipleSelection = NO;
        }
        [_friendPickerController clearSelection];
        [_friendPickerController loadData];
        [self presentViewController:_friendPickerController animated:YES completion:nil];
  }  

此代码在登录后调用,在 appDelegate 中按照 Facebook 教程完成 -

- (void)openSession
{
    NSArray *permissions = @[@"friends_about_me"];
    [FBSession openActiveSessionWithReadPermissions:permissions
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {
         [self sessionStateChanged:session state:state error:error];
     }];
}
4

1 回答 1

3

您需要在 viewController 的 viewDidLoad 方法中添加以下代码。

if (!FBSession.activeSession.isOpen) {
    // if the session is closed, then we open it here, and establish a handler for state changes
    [FBSession.activeSession openWithCompletionHandler:^(FBSession *session,
                                                         FBSessionState state,
                                                         NSError *error) {
        switch (state) {
            case FBSessionStateClosedLoginFailed:
            {
                UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                                    message:error.localizedDescription
                                                                   delegate:nil
                                                          cancelButtonTitle:@"OK"
                                                          otherButtonTitles:nil];
                [alertView show];
            }
                break;
            default:
                break;
        }
    }];
}
于 2013-03-07T08:46:57.477 回答