Получить список друзей Facebook и отобразить его в пользовательском представлении?

Я пытаюсь получить список друзей FaceBook и отобразить его в пользовательском представлении, например «приложение foresqure».

что я имею в виду, «foursquare» запрашивают разрешение и размещают сообщения на вашей стене внутри приложения, не выходя из приложения в браузер или в приложение Facebook? после этого приложение получает всех друзей и отображает их в пользовательском tableView.

введите здесь описание изображения

вот что я пробовал:

if (!FBSession.activeSession.isOpen) {
    // if the session is closed, then we open it here, and establish a handler for state changes
    [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];
                                          NSLog(@"aaaa");
                                          FBRequest* friendsRequest = [FBRequest requestForMyFriends];
                                          [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
                                                                                        NSDictionary* result,
                                                                                        NSError *error) {
                                              NSArray* friends = [result objectForKey:@"data"];
                                              NSLog(@"Found: %i friends", friends.count);
                                              for (NSDictionary<FBGraphUser>* friend in friends) {
                                                  NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
                                              }
                                          }];
                                      }
                                  }];

}

В этом случае он откроет сафари, чтобы запросить разрешение не внутри приложения, а массив друзей допускает nill или count = 0.


person Omarj    schedule 08.05.2014    source источник
comment
@DarshanKunjadiya проверьте это filedropper.com/testface   -  person Omarj    schedule 08.05.2014
comment
в моем Mac этот код работает отлично. я меняю только свой идентификатор приложения facebook и получаю весь список друзей.   -  person Darshan Kunjadiya    schedule 08.05.2014
comment
У меня была эта ошибка, когда я забыл проверить собственное приложение iOS (на странице разработчиков Facebook) и ввел свой идентификатор пакета, который совпадает с идентификатором пакета в вашем проекте Xcode. (включая название вашего проекта в конце.) У меня также была настройка на странице разработчиков Facebook, которая включала режим SandBox. Я также отключил режим песочницы, чтобы получить эту работу.   -  person Darshan Kunjadiya    schedule 08.05.2014


Ответы (1)


Попробуйте этот код..

Сначала вызовите этот метод так..

[self FBFriendList];

И добавьте эти два метода.

-(void)FBFriendList
{
if (!FBSession.activeSession.isOpen)
{
    // if the session is closed, then we open it here, and establish a handler for state changes

    [FBSession openActiveSessionWithReadPermissions:nil 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];
             [alertView release];
         }
         else if(session.isOpen)
         {
             [self FBFriendList];
             [self fb_frnd_use_this_app];
         }
     }];

    return;
}
}

-(void)fb_frnd_use_this_app
   {
    FBRequest *request =  [FBRequest  requestWithGraphPath:@"me/friends"
                                                parameters:@{@"fields":@"name,installed,first_name,picture"}
                                                HTTPMethod:@"GET"];

    [request startWithCompletionHandler:^(FBRequestConnection *connection,
                                          id result,
                                          NSError *error)
     {


         NSLog(@"%@",result);
         int count = 0;
         NSMutableArray *frnd_arr = [result objectForKey:@"data"];
         for (int i = 0; i < [frnd_arr count]; i++)
         {
             NSLog(@"%@",frnd_arr);
             count++;
         }

         NSLog(@"%@",app.Arr_Facebook_Frnd);
         app.fbfriendCount =[NSString stringWithFormat:@"%d",count];

     }];
}

Надеюсь, этот код будет полезен для вас.

person Darshan Kunjadiya    schedule 08.05.2014
comment
тот же результат открыть: открыть сафари, чтобы запросить разрешение, а это не то, что я хочу :( - person Omarj; 08.05.2014
comment
Разрешение @Omarj является обязательным для получения списка друзей Facebook. - person Darshan Kunjadiya; 08.05.2014
comment
Я знаю, что я пытаюсь получить разрешение git, например, приложение Foursqure, посмотрите на фотографию, которую я прикрепил? - person Omarj; 08.05.2014
comment
@Omarj, что я не понимаю ?? - person Darshan Kunjadiya; 08.05.2014
comment
Во-первых, код внутри блока openActiveSessionWithReadPermissions никогда не вызывается? даже NSLog.// - person Omarj; 08.05.2014
comment
ты фото там вверху видел? когда вы загружаете приложение Foursquare и пытаетесь зайти/выйти и щелкнуть значок Facebook, оно попросит вас получить доступ к вашей учетной записи Facebook, получить некоторую информацию и запросить разрешение в режиме оповещения, и оно никогда не выходит из приложения? - person Omarj; 08.05.2014
comment
@Omarj означает, что вы попытаетесь найти друга, не отправляясь в сафари ?? я не ошибаюсь ?? - person Darshan Kunjadiya; 08.05.2014
comment
давайте продолжим это обсуждение в чате - person Omarj; 08.05.2014