2010-12-04 6 views
3

Я пытаюсь загрузить стенные сообщения пользователей. Учетная запись FB, с которой я получаю сообщения, всегда будет публичной, поэтому я не думаю, что вам нужно войти в систему. Я не могу найти какую-либо документацию в SDK FBConnect iOS, поэтому я надеюсь кто-то здесь может мне помочь.Как загрузить настенные столбы с FBConnect iPhone

Новейший SDK использует

- (void)requestWithGraphPath:(NSString *)graphPath 
       andParams:(NSMutableDictionary *)params 
      andDelegate:(id <FBRequestDelegate>)delegate; 

, чтобы получить данные из пользовательского графика. Проблема в том, что я понятия не имею, какие приемлемые параметры или что такое graphPath. Я думаю, что путь графа - это просто имя после www.facebook.com, но я не уверен.

Что я хотел бы сделать, это получить последние 20 стеновых сообщений, сделанных на публичной странице исполнителя.

Заранее спасибо!

О, если вы знаете хорошее место, чтобы получить документацию по FBConnect iOS, которая была бы удивительной. Я знаю, что есть крошечный бит на странице загрузки гит-хаба, но мне бы хотелось увидеть что-то еще более полное.

ОБНОВЛЕНИЕ

Я нашел подходящую документацию. http://developers.facebook.com/docs/reference/api/ Я также обнаружил, что если вы просто хотите, чтобы владелец сообщений на страницах указывал/userID/posts, а не/userID/feed.

+0

Я показываю dcumentation. есть ли какой-либо демонстрационный проект, чтобы я мог больше узнать об этом? – ios 2011-05-14 04:30:49

ответ

2
  1. Первым параметром является действительно @ «идентификатор/корм»
  2. второй пуст, потому что корма не требуется какой-либо параметр так [NSDictionary dictionary] будет делать хорошо ,
  3. третий - это ссылка на класс, реализующий протокол FBRequestDelegate.

Протокол определения двух методов:

- (void)request:(FBRequest*)request didLoad:(id)result 
- (void)request:(FBRequest*)request didFailWithError:(NSError*)error 

довольно прямо вперед: результат либо массив или словарь в зависимости от того, что вы запрашиваете канал обычно будет NSArray столба.

Посмотрите на GraphApi Doc, чтобы узнать больше о graphPath.

0

Предлагаю вам не использовать FBConnect. просто начать свой NSURLConnection (в вашей viewDidLoad функции возможно) и анализировать фид Facebook JSON в connectionDidFinishLoading функции:

- (void)viewDidLoad { 
    NSURLRequest *request = [NSURLRequest requestWithURL: 
           [NSURL URLWithString: [NSString stringWithFormat:@"%@%@/feed", @"http://graph.facebook.com/", @"cocacola"]]]; 
     [NSURLConnection connectionWithRequest:request delegate:self]; 
} 


- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response { 
    [responseData setLength:0]; 
} 

- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data { 
    [responseData appendData:data]; 
} 

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error { 
    NSLog(@"Connection failed: %@", [error description]); 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    SBJsonParser *parser = [[SBJsonParser alloc] init]; 
    NSString *json = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    NSDictionary *dictionary = [parser objectWithString:json]; 

    NSMutableArray *arr = [dictionary mutableArrayValueForKey:@"data"]; 
    int len = [arr count]; 
    for(int i = 0; i < len; ++i) { 
     NSDictionary *d = [arr objectAtIndex:i]; 
     [list addObject:d]; 
    } 
    [json release]; 
    [parser release]; 
} 

где list является NSMutableArray, SBJsonParser импортируется (JSON-основа для Objective-C, см http://json.org) , responseData является NSMutableData

после этого, доступ list для отображения стены сообщения:

NSString *message= [[list objectAtIndex:0] objectForKey:@"message"];

, если вы хотите, чтобы захватить значок профиля пользователя, используйте:

self.profileImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@/picture", @"http://graph.facebook.com/", @"cocacola"]]]]; 

где profileImage является UIImage объект.

обязательно замените @"cocacola" с соответствующим идентификатором пользователя

+0

Интересный подход. Я добавил код в свой проект, но внутри подключенияDidFinishLoading всегда содержит 0 объектов. Кроме того, есть ли способ ограничить количество стенных столбов, которые я получаю? Меня, наверное, интересуют только последние 10 или около того сообщений. Спасибо! – jmurphy 2010-12-04 23:50:21

+1

Почему бы не использовать фреймворк, когда он там и работает? – VdesmedT 2010-12-04 23:57:46

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