Intereting Posts
Ошибка KIF 3.2.0 для конфигурации arm64 Могу ли я иметь более одной настраиваемой схемы URL для аутентификации с помощью iOS SDK для Facebook Сбой длины NSdata на устройстве Динамический буфер в объекте C (с ARC) предупреждение о сохранении памяти ios Неполная анимация пользовательских параметров в режиме CAMetalLayer Как выбрать несколько изображений из UIImagePickerController в ios Максимально допустимое количество Push Notification, которое Apple разрешает Swinject дает код EXC_BAD_ACCESS = 2 в рамках простого проекта. Работа с компиляцией с помощью Xcode 9 beta Как сравнить массив NSStrings, содержащий даты в порядке возрастания IOS-Data отображается только в iphone 5s ios 9.1 simulater, но данные не отображаются в других симуляторах Как нарисовать маршрут между моим текущим местоположением в нужное место на MKMapView? Вывод файла iPhone PLIST CFStringTokenizer не токирует предложения в нижнем регистре Как удалить все кнопки из представления в iOS 7?

Как получить список друзей из Facebook iOS sdk

Я использую iOS sdk v3.18.1, я хочу получить всех своих друзей в Facebook. Я могу заставить друзей подсчитать, но данные нулевые.

Вот мой код

[FBRequestConnection startWithGraphPath:@"me/friends" parameters:nil HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { NSLog(@"result %@",result); }]; 

Вывод

 { data = ( ); summary = { "total_count" = 840; }; } 

https://developers.facebook.com/docs/apps/changelog

Поскольку v2.0 вы больше не можете получить полный список друзей, вы получаете только друзей, которые также утвердили ваше приложение.

Смотрите также мой ответ в этой теме: как получить список всех друзей пользователя (не только тех, кто использует приложение)?

 // 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]; 

С FB SDK 3.0 и версией API выше 2.0 вам нужно вызвать функцию ниже (график api со мной / друзьями), чтобы получить список друзей FB, который использует то же приложение.

 // 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]; }]; } 

Примечание: 1) Ограничение по умолчанию для числа друзей, возвращаемых указанным выше запросом, равно 25. 2) Если следующая ссылка приходит в результате, это означает, что есть еще несколько друзей, которые вы будете получать в следующем запросе и так далее. 3) В качестве альтернативы вы можете изменить предел (уменьшить предел, превысить предел от 25) и передать это в параметре.

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

Для друзей без приложения –

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

Также, чтобы получить друзей от друзей, вам нужно использовать (/ me / invitable_friends), как показано ниже:

 - (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]; } 

Для приглашения друга без приложения –

вы получите пригласительные токены со списком друзей, возвращаемых мной / invitable_friends graph api. Вы можете использовать эти токены приглашения с помощью FBWebDialogs, чтобы отправить приглашение друзьям, как показано ниже.

 - (void) openFacebookFeedDialogForFriend:(NSString *)userInviteTokens { NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: userInviteTokens, @"to", nil, @"object_id", @"send", @"action_type", actionLinksStr, @"actions", nil]; [FBWebDialogs presentRequestsDialogModallyWithSession:nil message:@"Hi friend, I am playing game. Come and play this awesome game with me." title:nil parameters:params handler:^( FBWebDialogResult result, NSURL *url, NSError *error) { if (error) { // Error launching the dialog or sending the request. NSLog(@"Error sending request : %@", error.description); } else { if (result == FBWebDialogResultDialogNotCompleted) { // User clicked the "x" icon NSLog(@"User canceled request."); NSLog(@"Friend post dialog not complete, error: %@", error.description); } else { NSDictionary *resultParams = [g_mainApp->m_appDelegate parseURLParams:[url query]]; if (![resultParams valueForKey:@"request"]) { // User clicked the Cancel button NSLog(@"User canceled request."); } else { NSString *requestID = [resultParams valueForKey:@"request"]; // here you will get the fb id of the friend you invited, // you can use this id to reward the sender when receiver accepts the request NSLog(@"Feed post ID: %@", requestID); NSLog(@"Friend post dialog complete: %@", url); } } } }]; } 

Поскольку, V2.0 API-интерфейса Graph, вы сможете получить список друзей, подключенных к вашему приложению. В версии 2.0 API-диаграммы call / me / friends возвращают друзей человека, которые используют это приложение. Да, можно получить счет, но доступ к списку друзей невозможен.

Все выпуски Facebook SDK после апрельского месяца отрицают эту возможность получения всего списка друзей.

REFER: SO QUESTION: API графиков Facebook возвращается пустым …. FACEBOOK USER GUIDE

Это было подтверждено FACEBOOK .