2015-09-11 2 views
5

Я использую ниже код, чтобы получить Facebook друга, который использует AppFacebook IOS SDK - получить список друзей в Graph API v2.4

// Issue a Facebook Graph API request to get your user's friend list 
    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] 
            initWithGraphPath:@"/{friendlist-id}" 
            parameters:nil 
            HTTPMethod:@"GET"]; 
    [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, 
              id result, 
              NSError *error) { 
     // Handle the result 
    }]; 

Но я получаю следующий ответ.

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

Как я могу получить fbID, как мы используем, чтобы получить последнюю версию api с использованием FBRequest.

Примечание. Я использую последний FB SDK.

Спасибо.

+1

кода правильный, но вы получите список друзей только те друзья, которые могут использовать ваши приложения с. fb login. –

+0

Да, я знаю это, но некоторые из моих друзей используют приложение через facebook login .., но я не получаю fbID, который, как я ожидаю, вернусь указанным выше кодом. –

+0

И вы, и ваши друзья должны предоставить ' user_friends 'разрешение на приложение - это то, что в случае? – CBroe

ответ

4

Вы должны добавить разрешения во время входа в user_friends

Токен доступа пользователя с user_friends разрешения требуется для просмотра любых из списков друга этого человека.

вы можете получить только то, что друзья, которые установлены одни и те же приложения,

Только друзья, установившие это приложение, возвращаются в API v2.0 и выше. total_count в сводке представляет общее количество друзей, в том числе тех, кто не установил приложение.

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] 
           initWithGraphPath:@"me/friends" 
           parameters:nil 
           HTTPMethod:@"GET"]; 
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, 
             id result, 
             NSError *error) { 
    // Handle the result 
}]; 
+0

оценен, но это не так. что мне нужно ... Я просто хочу, чтобы fbID из друзей facebook, которые используют одно и то же приложение (область приложения такая же). –

+0

Да, я добавляю разрешения для этого и получаю все тот же ответ, общий подсчет друзей, но не fbID, но этот ответ должен быть приемлемым в любом случае. logInViewController.facebookPermissions = [[NSArray alloc] initWithObjects: @ "public_profile", @ "user_friends", nil]; –

+0

Нет данных, значит не установлены приложения вашего друга. –

3

Вы можете получить список друзей и многие другие Подробности, как это:

#import <FBSDKCoreKit/FBSDKCoreKit.h> 
#import <FBSDKLoginKit/FBSDKLoginKit.h> 
#import <FBSDKShareKit/FBSDKShareKit.h> 

пользовательских Facebook нажатия кнопок:

- (IBAction)facebook_click:(id)sender 
{ 
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 

    [login logInWithReadPermissions:@[@"public_profile", @"email", @"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) 
    { 
     if (error) 
     { 
      // Process error 
      NSLog(@"error is :%@",error); 
     } 
     else if (result.isCancelled) 
     { 
      // Handle cancellations 
      NSLog(@"error is :%@",error); 
     } 
     else 
     { 
      if ([result.grantedPermissions containsObject:@"email"]) 
      { 
       NSLog(@"Login successfull"); 
       [self fetchUserInfo]; 
       [login logOut]; 
      } 
     } 
    }]; 
} 

Ответ Запрос:

-(void)fetchUserInfo 
{ 
    if ([FBSDKAccessToken currentAccessToken]) 
    { 
     [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id,name,link,first_name, last_name, picture.type(large), email, birthday,friends,gender,age_range,cover"}] 
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
      if (!error) 
      { 
       //NSLog(@"result is :%@",result); 
       NSLog(@"User ID : %@",[result valueForKey:@"id"]); 
       NSLog(@"User Name : %@",[result valueForKey:@"name"]); 
       NSLog(@"User First Name :%@",[result valueForKey:@"first_name"]); 
       NSLog(@"User Last Name :%@",[result valueForKey:@"last_name"]); 
       NSLog(@"USER Email is :%@",[result valueForKey:@"email"]); 
       NSLog(@"User fb_Link : %@",[result valueForKey:@"link"]); 
       NSLog(@"User Birthday : %@",[result valueForKey:@"birthday"]); 
       NSLog(@"FB Profile Photo Link :%@",[[[result valueForKey:@"picture"]objectForKey:@"data"]objectForKey:@"url"]); 
       NSLog(@"User total friends : %@",[[[result valueForKey:@"friends"]objectForKey:@"summary"]valueForKey:@"total_count"]); 
       NSLog(@"User Gender : %@",[result valueForKey:@"gender"]); 
       NSLog(@"User age_range : %@",[[result valueForKey:@"age_range"]objectForKey:@"min"]); 
       NSLog(@"User cover Photo Link : %@",[[result valueForKey:@"cover"]objectForKey:@"source"]); 

       //Friend List ID And Name 
       NSArray * allKeys = [[result valueForKey:@"friends"]objectForKey:@"data"]; 

       fb_friend_Name = [[NSMutableArray alloc]init]; 
       fb_friend_id = [[NSMutableArray alloc]init]; 

       for (int i=0; i<[allKeys count]; i++) 
       { 
        [fb_friend_Name addObject:[[[[result valueForKey:@"friends"]objectForKey:@"data"] objectAtIndex:i] valueForKey:@"name"]]; 

        [fb_friend_id addObject:[[[[result valueForKey:@"friends"]objectForKey:@"data"] objectAtIndex:i] valueForKey:@"id"]]; 

       } 
       NSLog(@"Friends ID : %@",fb_friend_id); 
       NSLog(@"Friends Name : %@",fb_friend_Name); 
      } 
     }]; 
    } 
} 

Вы можете получить Профиль друзей Pic, используя этот API.

NSString *str = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large",friend_id]; 
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]]; 
UIImage *profilePic = [UIImage imageWithData:imageData]; 

Note : it will only display the Friends list who is download your application. Not all friends of your facebook friends. Its not possible to get FriendList or EmailId of Friends, according to new API version

+0

друзей и знакомых не существует Facebook Ошибка: code = 100; "fbtrace_id" = Eik7oS4zQRt; message = "(# 100) Неизвестные поля: friens, friendlist." type = OAuthException; – Rincha

+0

также можно получить fb_friend_image? – Niharika

+0

@Niharika I Have Edit Мой ответ проверить это Вы можете получить профиль друзей Pic с помощью этого API. :) – sohil

7

Его невозможно получить список друзей или EMAILID друзей, согласно новой версии API, но если Вы хотите, чтобы показать список друзей использовать TaggableFriend Особенность Facebook.This Taggable API необходимо одобрение от Facebook и этот API возвращает идентификатор, друзья имя, изображение профиля URL.but Id не является FacebookId его идентификатор для публикации на стене. Это единственный способ получить друзей. Но если вы используете меня/друзей, он возвращает общее количество друзей и друзей. Список приложений User. Поскольку у вас нет пользователя приложения, он показывает только общее количество друзей. Чтобы реализовать эту функцию, вы входите в систему с учетной записью администратора (с учетной записью, с которой был создан Facebook ID), для этого вам необходимо реализовать концепцию поискового вызова.

Используйте этот код Спиннеты:. «/me/taggable_friends?fields=id,name,picture.type(large)

+0

Это я искал! Спасибо –

+0

Но как получить одобрение от Facebook, я пытаюсь, но не преуспел. Помогите мне –

+0

В идеале это должно быть принято как ответ! –

Смежные вопросы