如何在不打开FB Friends Picker View Controller iOS的情况下获取朋友列表

时间:2013-03-29 18:28:33

标签: iphone ios facebook ios5 facebook-ios-sdk

我正在使用Facebook sdk 3.2 for iOS,
iOS有各种示例项目 但我的问题是如何在不打开FBFriendPickerViewController的情况下获取朋友列表 事实上,我想要所有的朋友facebook id和那里 任何帮助将不胜感激 在此先感谢

1 个答案:

答案 0 :(得分:4)

试试这个:

使用

获取好友列表
**[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];
}
}