【问题标题】:How to download wall posts with FBConnect iPhone如何使用 FBConnect iPhone 下载墙贴
【发布时间】:2011-05-20 08:57:24
【问题描述】:

我正在尝试下载用户墙帖。我从中获取帖子的 FB 帐户将始终设置为公开,因此我认为不需要登录。我似乎无法在 FBConnect iOS SDK 上找到任何文档,所以我希望这里有人可以帮助我。

最新的SDK正在使用

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

从用户图中获取数据。问题是我不知道可接受的参数是什么或 graphPath 是什么。我认为图形路径只是 www.facebook.com 之后的名称,但我不确定。

我想做的是在公共艺术家页面上获取最后 20 个墙贴。

提前致谢!

哦,如果您知道获取一些 FBConnect iOS 文档的好地方,那将会很棒。我知道 git hub 下载页面上有一些内容,但我希望看到更完整的内容。

更新

我找到了一些不错的文档。 http://developers.facebook.com/docs/reference/api/ 我还发现,如果您只希望页面的所有者发布您指定 /userID/posts 而不是 /userID/feed。

【问题讨论】:

  • 我显示文件。是否有可用的演示项目,以便我了解更多信息?

标签: iphone facebook ios fbconnect


【解决方案1】:
  1. 第一个参数确实是@"userid/feed"
  2. 第二个是空的,因为 feed 不需要任何参数,所以[NSDictionary dictionary] 就可以了。
  3. 第三个是对实现 FBRequestDelegate 协议的类的引用。

协议定义了两种方法:

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

非常简单:根据您请求的内容,结果是数组或字典,通常是帖子的 NSArray。

查看 GraphApi 文档以了解有关 graphPath 的更多信息。

【讨论】:

  • 感谢您的回答,效果很好!您知道提要中有哪些消息吗?这也包括用户 cmets 吗?我只对获取页面所有者发布的消息感兴趣。您知道向所有者请求最后 10 个帖子的方法吗?我已经在字典中添加了键“限制”,但我似乎收到了各种我不感兴趣的消息。你还知道可用的参数是否记录在某处吗?再次感谢
  • 找到我的问题的答案,在问题中寻找更新。谢谢
【解决方案2】:

我建议你不要使用FBConnect。只需启动 NSURLConnection(也许在您的 viewDidLoad 函数中)并在 connectionDidFinishLoading 函数中解析 Facebook JSON 提要:

- (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];
}

其中listNSMutableArraySBJsonParser 是导入的(objective-c 的json 框架,请参阅http://json.org),responseDataNSMutableData

在此之后,访问list 以显示墙贴:

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

如果您想获取用户的个人资料图标,请使用:

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

其中profileImageUIImage 对象。

请务必将 @"cocacola" 替换为适当的用户 ID

【讨论】:

  • 有趣的方法。我将代码添加到我的项目中,但 connectionDidFinishLoading 中的 arr 始终包含 0 个对象。另外,有没有办法限制我获得的墙帖数量?我可能只对最近 10 个左右的帖子感兴趣。谢谢!
  • 愚蠢的错误,我没有分配responseData对象。
  • 我不认为 facebook 允许您限制结果.. 阅读 facebook graph api:developers.facebook.com/docs/api
  • FaceBook Graph API 提供参数来限制结果。请检查以下“限制”和“偏移”参数。graph.facebook.com/me/likes?offset=2&limit=3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多