Search code examples
iphoneiosfacebookios5facebook-ios-sdk

How to get the list of friend without opening FBFriendPickerViewController iOS


I am using Facebook sdk 3.2 for iOS,
There are various sample project available for iOS
But my problem is how can i get the list of friends without opening FBFriendPickerViewController.
In fact i want all my friends facebook id and there Any help will be appreciated.
Thanks in Advance


Solution

  • Try this:

    get friend list using

    **[FBRequest requestForMyFriends];**
    
    **FBRequest* friendsRequest = [FBRequest requestForMyFriends];**
    
    [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,NSDictionary* result,NSError *error) {
    NSArray* friends = [result objectForKey:@"data"];   ......
    

    the coding is as follow but main line is

     **[FBRequest requestForMyFriends];**
    
    -(void)sessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error {
    switch (state) {
        case FBSessionStateOpen: {
            if (self != nil) {
                [[FBRequest requestForMe] startWithCompletionHandler: ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
                    if (error) {
                        //error
                    }else{
                        FBRequest* friendsRequest = [FBRequest requestForMyFriends];
                        [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,NSDictionary* result,NSError *error) {
                            NSArray* friends = [result objectForKey:@"data"];
    
                            for (int i = 0; i < [arrFacebookFriends count]; i++) {
                                UserShare *shareObj = [arrFacebookFriends objectAtIndex:i];
                                [shareObj release];
                                shareObj = nil;
                            }
                            [arrFacebookFriends removeAllObjects];
    
                            for (NSDictionary<FBGraphUser>* friend in friends) {
                                UserShare *shareObj = [[UserShare alloc] init];
                                shareObj.userName = friend.name;
                                shareObj.userFullName = friend.username;
                                shareObj.userId = [friend.id intValue];
                                NSLog(@"%@",friend.id);
                                shareObj.userPhotoUrl = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?", friend.id];
                                [arrFacebookFriends addObject:shareObj];
                                [shareObj release];
                            }
                            [self StopSpinner];
                            [tblFacebookFriends reloadData];
                        }];
                    }
                }];
            }
            FBCacheDescriptor *cacheDescriptor = [FBFriendPickerViewController cacheDescriptor];
            [cacheDescriptor prefetchAndCacheForSession:session];
        }
            break;
        case FBSessionStateClosed: {
            [self StopSpinner];
            UIViewController *topViewController = [self.navigationController topViewController];
            UIViewController *modalViewController = [topViewController modalViewController];
            if (modalViewController != nil) {
                [topViewController dismissViewControllerAnimated:YES completion:nil];
            }
            //[self.navigationController popToRootViewControllerAnimated:NO];
    
            [FBSession.activeSession closeAndClearTokenInformation];
    
            [self performSelector:@selector(showLoginView) withObject:nil afterDelay:0.5f];
        }
            break;
        case FBSessionStateClosedLoginFailed: {
            [self StopSpinner];
            [self performSelector:@selector(showLoginView) withObject:nil afterDelay:0.5f];
        }
            break;
        default:
            break;
    }
    
    [[NSNotificationCenter defaultCenter] postNotificationName:SCSessionStateChangedNotificationFL object:session];
    
    if (error) {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Error: %@", [FacebookFriendsListViewController FBErrorCodeDescription:error.code]] message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertView show];
        [alertView release];
    }
    }