无法通过iOS中的FBFriendPicker获得Facebook好友

时间:2014-07-04 05:28:49

标签: ios iphone facebook

我希望在我的项目中获得Facebook好友。我尝试了FBFriendPicker方法,但我找不到朋友。它向我显示空列表。

这是我的代码。

- (IBAction)pickFriendsButtonClick:(id)sender {

if (!FBSession.activeSession.isOpen) {
    [FBSession openActiveSessionWithReadPermissions:@[@"public_profile", @"user_friends"]
                                       allowLoginUI:YES
                                  completionHandler:^(FBSession *session,
                                                      FBSessionState state,
                                                      NSError *error) {
                                      if (error) {
                                          UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                                                              message:error.localizedDescription
                                                                                             delegate:nil
                                                                                    cancelButtonTitle:@"OK"
                                                                                    otherButtonTitles:nil];
                                          [alertView show];
                                      } else if (session.isOpen) {
                                          [self pickFriendsButtonClick:sender];
                                      }
                                  }];
    return;
}

if (self.friendPickerController == nil) {
    // Create friend picker, and get data loaded into it.
    self.friendPickerController = [[FBFriendPickerViewController alloc] init];
    self.friendPickerController.title = @"Pick Friends";
    self.friendPickerController.delegate = self;
}

[self.friendPickerController loadData];
[self.friendPickerController clearSelection];

[self presentModalViewController:self.friendPickerController animated:YES];
}

4 个答案:

答案 0 :(得分:1)

试试这个...

-(IBAction)btnFacebookClick:(id)sender
{
    NSArray *permissions = [[NSArray alloc] initWithObjects:                            @"user_about_me,user_birthday,user_hometown,user_location,email",@"read_mailbox",@"read_stream",nil];


    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler:^(FBSession *session,FBSessionState status,NSError *error)
     {
         if(error)
         {
             NSLog(@"session error %@",error);

         }
         else if(FB_ISSESSIONOPENWITHSTATE(status))
         {

             [self getFriendList];
         }


     }];
}


-(void)getFriendList
{
    FBRequest *friendsRequest=[FBRequest requestForMyFriends];


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

         NSLog(@"friends description :%@",[friendsArr description]);

     }];
}

答案 1 :(得分:1)

尝试使用此代码获取Facebook好友....

FBRequest* friendsRequest = [FBRequest requestForMyFriends];
friendsRequest.session = FBSession.activeSession;

[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
                                              NSDictionary* result,
                                              NSError *error) {
    NSArray* friends = [result objectForKey:@"data"];
    NSLog(@"Found: %lu friends", (unsigned long)friends.count);
    for (NSDictionary<FBGraphUser>* friend in friends)
    {
        NSLog(@"I have a friend named %@ ", friend.name);
    }
}];

答案 2 :(得分:0)

请尝试以下代码:

[FBSession openActiveSessionWithReadPermissions:@[@"email"]
                                   allowLoginUI:YES
                              completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
                                  if (error) {
                                      // Handle errors
                                      [self handleAuthError:error];
                                  }
                                  else
                                  {
                                      // Check for publish permissions
                                      FBRequest *req = [FBRequest requestForMyFriends];
                                      [req startWithCompletionHandler:^(FBRequestConnection *connection,NSDictionary *result,NSError *error){
                                          NSLog(@"Result:- %@",[result objectForKey:@"data"]);
                                      }];
                                  }
                              }];

答案 3 :(得分:0)

使用新的API版本v2.0,您无法获得仅使用user_friends的完整朋友列表。您的选择器必须使用/me/friends,这将为您提供使用该应用的朋友列表。因此,在您的情况下,您的朋友都没有使用此应用,这也是您获得空白回复的原因。

要获取完整的朋友列表,您应该使用/me/taggable_friends API。但请注意,在您上线之前,此权限必须首先由facebook reviewed。有关使用此权限的详细信息,请参阅this答案。