FBFriendPickerViewController периодически загружает пустой tableview


Я использую 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];
     }];
}
1 2

1 ответ:

Вам необходимо добавить следующий код в метод viewDidLoad вашего viewController.

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;
        }
    }];
}