Facebook Graph API - 批量请求大型个人资料照片

时间:2012-08-27 16:34:27

标签: iphone ios xcode facebook-graph-api facebook-batch-request

尝试通过批量请求获取我可以成功完成的所有用户Facebook好友信息:

NSString *jsonRequest1 = @"{ \"method\": \"GET\", \"relative_url\": \"me/friends?fields=name,picture\" }";
NSString *jsonRequestsArray = [NSString stringWithFormat:@"[%@]", jsonRequest1];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:jsonRequestsArray forKey:@"batch"];
[facebook requestWithGraphPath:@"me" andParams:params andHttpMethod:@"POST" andDelegate:self];

个人资料照片尺寸较小(50x50),我需要指定照片的大小。我一直在查看图形API文档,我正在努力将两者结合在一起 - 这里是相关链接:http://developers.facebook.com/docs/reference/api/user/

它说要在请求中添加以下参数,但就像我说的那样,我不确定如何将两者结合在一起:

picture?type=large

我确信它适用于特定用户的单个请求,但我通过批量请求没有运气。

感谢您的帮助,它可能正在盯着我!

4 个答案:

答案 0 :(得分:2)

FQL有一些像Facebook所说的优势

   FQL,Facebook查询语言,允许您使用SQL风格   用于查询Graph API公开的数据的接口。它提供了先进的   图谱API中没有的功能,包括批处理多个功能   查询到一个电话。

从Facebook查看本教程。

https://developers.facebook.com/docs/howtos/run-fql-queries-ios-sdk/

但我建议使用带有字段扩展的Graph API,这比FQL更有帮助,也更容易理解。请注意,Graph API不支持所有子字段。

https://developers.facebook.com/docs/reference/api/field_expansion/

祝你好运!

答案 1 :(得分:1)

我认为使用Graph API没有一种简单的方法可以做到这一点。这个FQL查询很容易(可以通过批处理请求传递):

SELECT uid, name, pic_big FROM user WHERE uid IN 
  (SELECT uid2 FROM friend WHERE uid1 = me())

如果您正在寻找特定大小的图片,请查看新的profile_pic表格。

答案 2 :(得分:1)

可以通过向URL添加height和width参数来实现。 FB将尝试为您提供符合宽度和高度标准的图像。您的批次看起来像这样:

var batch= {
  batch: []
};

batch.batch.push({
  method: 'GET',
  relative_url: fbid + '/picture?height=400&width=400'
});

FB.api('/', 'POST', batch, function (response) {
});

答案 3 :(得分:0)

这样的事情对我有用:

{
"friends": "SELECT uid, name, pic_big FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())",
"profiles": "SELECT id, url, real_width, real_height FROM profile_pic WHERE id IN (SELECT uid FROM #friends) AND width = 300"
}

它并不完美(扫描两个查询),但它只是一个请求。

基于profile_pic表格文档。

可以在FQL Explorer中进行测试。