Загрузите друзей из Facebook в UITableView - PullRequest
7 голосов
/ 06 августа 2011

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

Я знаю, что [facebook requestWithGraphPath:@"me/friends" andDelegate:self]; просит друзей из Facebook, но я не могу определить, что делать оттуда. Каким-то образом я хочу получить идентификаторы друзей, чтобы я мог отправить им сообщение. Любая информация или совет будет высоко ценится. Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 06 августа 2011
 - (void)getFriendsResponse {
    FbGraphResponse *fb_graph_response = [fbGraph doGraphGet:@"me/friends" withGetVars:nil];// me/feed 
//parse our json
   SBJSON *parser = [[SBJSON alloc] init];
   NSDictionary *   facebook_response = [parser objectWithString:fb_graph_response.htmlResponse error:nil]; 
   //init array 
        NSMutableArray * feed = (NSMutableArray *) [facebook_response objectForKey:@"data"];
        NSMutableArray *recentFriends = [[NSMutableArray alloc] init];

        //adding values to array
        for (NSDictionary *d in feed) {

            NSLog(@"see Dicitonary :%@",d );
            facebook   = [[Facebook alloc]initWithFacebookDictionary:d ];
            [recentFriends addObject:facebook];
            NSLog(@"Postsss :->>>%@",[facebook sender]);

            [facebook release];
        }

        friends = recentFriends;

        [self.tableView reloadData];
     }

и затем Показать NSArray в TableView

3 голосов
/ 04 марта 2012

Вы можете попробовать это, если хотите получить друга пользователя с фотографиями профиля одновременно.Сначала:

- (void) requestFriends:(NSNumber *) fbUserId
{ 
    NSLog(@"requesting friends");

    NSString* fql1 = [NSString stringWithFormat:
                      @"select uid2 from friend where uid1 = %@", fbUserId ];
    NSString* fql2 = [NSString stringWithFormat:
                      @"select uid, name, pic_small from user where uid in (select uid2 from #queryID) order by name"];
    NSString* fql = [NSString stringWithFormat:
                     @"{\"queryID\":\"%@\",\"queryUser\":\"%@\"}",fql1,fql2];

    NSLog(fql);

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:fql forKey:@"queries"];

    [_facebook requestWithMethodName:@"fql.multiquery" andParams:params andHttpMethod:@"GET" andDelegate:self];
}

Затем, когда вы получите ответ, для его обработки:

-(void) processFriends:(id) result
{
    //NSLog(@"processFriends %@", result);
    NSArray *queryResults = (NSArray*) result;
    NSMutableDictionary *firstQuery = [queryResults objectAtIndex:0];
    NSMutableDictionary *secondQuery = [queryResults objectAtIndex:1];

    NSArray *resultSet1 = [firstQuery objectForKey:@"fql_result_set"];
    NSString *resultName1 = [firstQuery objectForKey:@"name"];

    NSArray *resultSet2 = [secondQuery objectForKey:@"fql_result_set"];
    NSString *resultName2 = [secondQuery objectForKey:@"name"];

    NSLog(@"%@\n\%@", resultName2, resultSet2);

}

В основном resultSet2 представляет собой массив записей, каждая из которых содержит друга, с этими ключами всловари для каждого друга: - uid - name - pic_small

Поэтому у вас есть все, что вам нужно.Надеюсь, это поможет!

...