如何获得朋友的列表,而无需打开FBFriendPickerViewController的iOS(Ho

2019-08-18 06:09发布

我使用Facebook的SDK 3.2适用于iOS,
有支持iOS各种示例项目
但我的问题是我怎么能得到朋友的列表,而无需打开FBFriendPickerViewController。
事实上,我想我所有的朋友Facebook的帐号有任何帮助,将不胜感激。
提前致谢

Answer 1:

试试这个:

使用得到好友列表

**[FBRequest requestForMyFriends];**

**FBRequest* friendsRequest = [FBRequest requestForMyFriends];**

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

编码是如下,但主线是

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


文章来源: How to get the list of friend without opening FBFriendPickerViewController iOS