2010-12-04 4 views
3

Je suis en train de télécharger des messages muraux d'utilisateurs. Le compte FB dont je reçois les messages est toujours paramétré sur public, donc je ne pense pas qu'il soit nécessaire de se connecter. Je n'arrive pas à trouver de documentation sur le SDK FBConnect iOS donc j'espère quelqu'un ici peut m'aider.Comment télécharger des messages muraux avec FBConnect iPhone

Le plus récent SDK utilise pour obtenir des données du graphique utilisateur

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

. Le problème est que je n'ai aucune idée quels sont les paramètres acceptables ou ce qu'est le graphPath. Je pense que le chemin du graphique est simplement le nom après www.facebook.com mais je ne suis pas sûr.

Ce que je voudrais faire, c'est obtenir les 20 derniers messages muraux faits sur une page d'artiste publique.

Merci d'avance!

Oh aussi si vous connaissez un bon endroit pour obtenir une documentation FBConnect iOS qui serait génial. Je sais qu'il y a un tout petit peu sur la page de téléchargement du hub git mais j'aimerais voir quelque chose de plus complet.

MISE À JOUR

J'ai trouvé une documentation correcte. http://developers.facebook.com/docs/reference/api/ J'ai également trouvé que si vous voulez juste le propriétaire des pages, vous indiquez/userID/posts plutôt que/userID/feed.

+0

Je montre la documentation. Y at-il un projet de démo disponible pour que je puisse en apprendre plus à ce sujet? – ios

Répondre

2
  1. Le premier paramètre est en effet @ « userid/feed »
  2. le second est vide parce que l'alimentation n'a pas besoin de paramètre si [NSDictionary dictionary] fera l'affaire . Le troisième est une référence à une classe implémentant le protocole FBRequestDelegate.

Le protocole définit deux méthodes:

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

: le résultat est soit un tableau ou un dictionnaire en fonction de ce que vous demandez une alimentation typiquement un NSArray de poste.

Consultez le document GraphApi Doc pour en savoir plus sur graphPath.

+0

Merci pour la réponse, a bien fonctionné! Savez-vous quels messages sont transmis avec le flux? Cela inclut-il également les commentaires des utilisateurs? Je ne suis intéressé qu'à obtenir les messages postés par le propriétaire de la page. Connaissez-vous un moyen de demander les 10 derniers messages du propriétaire? J'ai déjà ajouté la clé "limite" au dictionnaire mais il semble que je reçois toutes sortes de messages qui ne m'intéressent pas. Savez-vous également si les paramètres disponibles sont documentés quelque part? Merci encore – jmurphy

+0

J'ai trouvé les réponses à mes questions, cherchez une mise à jour dans la question. Merci – jmurphy

0

Je vous suggère de ne pas utiliser FBConnect. simplement démarrer une NSURLConnection (dans votre fonction viewDidLoad peut-être) et analyser le flux Facebook JSON en connectionDidFinishLoading fonction:

- (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 est un NSMutableArray, SBJsonParser est importé (JSON-cadre pour Objective-C, voir http://json.org) , responseData est un NSMutableData

après, l'accès list pour afficher les messages de mur:

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

si vous voulez saisir une icône de profil de l'utilisateur, utilisez ceci:

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

profileImage est un objet UIImage.

assurez-vous de remplacer @"cocacola" avec l'ID utilisateur approprié

+0

Approche intéressante. J'ai ajouté le code à mon projet mais arr à l'intérieur de connectionDidFinishLoading contient toujours 0 objets. Aussi, y a-t-il un moyen de limiter le nombre de poteaux muraux que je reçois? Je ne suis probablement intéressé que par les 10 derniers posts. Merci! – jmurphy

+1

Pourquoi ne pas utiliser un framework quand il est là et qu'il fonctionne? – VdesmedT

+0

Erreur stupide, je n'ai pas alloué l'objet responseData. – jmurphy

Questions connexes