Facebook iOS SDK - get friends list

后端 未结 11 1445
猫巷女王i
猫巷女王i 2020-12-07 12:41

Using the Facebook iOS SDK, how can I get an NSArray of all my friends and send them an invitation to my app? I am specifically looking for the graph path to ge

11条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-07 12:58

    // declare an array in header file which will hold the list of all friends - NSMutableArray * m_allFriends;

    // alloc and initialize the array only once m_allFriends = [[NSMutableArray alloc] init];

    With FB SDK 3.0 and API Version above 2.0 you need to call below function (graph api with me/friends)to get list of FB Friends which uses the same app.

    // get friends which use the app

    -(void) getMineFriends
    {
        [FBRequestConnection startWithGraphPath:@"me/friends"
                                     parameters:nil
                                     HTTPMethod:@"GET"
                              completionHandler:^(
                                                  FBRequestConnection *connection,
                                                  id result,
                                                  NSError *error
                                                  ) {
                                  NSLog(@"me/friends result=%@",result);
    
                                  NSLog(@"me/friends error = %@", error.description);
    
                                  NSArray *friendList = [result objectForKey:@"data"];
    
                                  [m_allFriends addObjectsFromArray: friendList];
                              }];
    }
    

    Note : 1) The default limit for the number of friends returned by above query is 25. 2)If the next link comes in result, that means there are some more friends which you will be fetching in next query and so on. 3)Alternatively you can change the limit (reduce the limit, exceed the limit from 25) and pass that in param.

    ////////////////////////////////////////////////////////////////////////

    For non app friends -

    // m_invitableFriends - global array which will hold the list of invitable friends

    Also to get non app friends you need to use (/me/invitable_friends) as below -

    - (void) getAllInvitableFriends
    {
        NSMutableArray *tempFriendsList =  [[NSMutableArray alloc] init];
        NSDictionary *limitParam = [NSDictionary dictionaryWithObjectsAndKeys:@"100", @"limit", nil];
        [self getAllInvitableFriendsFromFB:limitParam addInList:tempFriendsList];
    }
    
    - (void) getAllInvitableFriendsFromFB:(NSDictionary*)parameters
                                addInList:(NSMutableArray *)tempFriendsList
    {
        [FBRequestConnection startWithGraphPath:@"/me/invitable_friends"
                                     parameters:parameters
                                     HTTPMethod:@"GET"
                              completionHandler:^(
                                                  FBRequestConnection *connection,
                                                  id result,
                                                  NSError *error
                                                  ) {
                                  NSLog(@"error=%@",error);
    
                                  NSLog(@"result=%@",result);
    
                                  NSArray *friendArray = [result objectForKey:@"data"];
    
                                  [tempFriendsList addObjectsFromArray:friendArray];
    
                                  NSDictionary *paging = [result objectForKey:@"paging"];
                                  NSString *next = nil;
                                  next = [paging objectForKey:@"next"];
                                  if(next != nil)
                                  {
                                      NSDictionary *cursor = [paging objectForKey:@"cursors"];
                                      NSString *after = [cursor objectForKey:@"after"];
                                      //NSString *before = [cursor objectForKey:@"before"];
                                      NSDictionary *limitParam = [NSDictionary dictionaryWithObjectsAndKeys:
                                                                  @"100", @"limit", after, @"after"
                                                                  , nil
                                                                  ];
                                      [self getAllInvitableFriendsFromFB:limitParam addInList:tempFriendsList];
                                  }
                                  else
                                  {
                                      [self replaceGlobalListWithRecentData:tempFriendsList];
                                  }
                              }];
    }
    
    - (void) replaceGlobalListWithRecentData:(NSMutableArray *)tempFriendsList
    {
        // replace global from received list
        [m_invitableFriends removeAllObjects];
        [m_invitableFriends addObjectsFromArray:tempFriendsList];
        //NSLog(@"friendsList = %d", [m_invitableFriends count]);
        [tempFriendsList release];
    }
    

提交回复
热议问题