如何在一个API调用中获取较大的照片URL?

我想立即在Facebook应用的Feed视图中显示大图片。 是否有可能从一个stream/饲料使用一个API调用获取大照片src的URL? 照片ID在stream/饲料中返回,当然可以在附加的FQL或graphicsAPI调用中提供该照片ID以检索关于该照片的所有信息。 但是,有没有办法使用多个查询或批量调用来获取更大的照片src url使用一个API往返?

我还没有试过这个stream/饲料的照片,但通常接受的方式是:

http://graph.facebook.com/{ID of object}/picture 

如果你想要“大”版本,你会这样做:

 http://graph.facebook.com/{ID of object}/picture?type=large 

我不是100%确定这是否适用于实际的照片(而不是用户资料图片或页面configuration文件图片),但我有一个预感 – 唯一的警告是,你显然必须有一个login用户有权查看照片(除非是公开的)。

如果有人正在寻找这种types,大型是不够的,我发现其他的解决scheme。

typeslarge是反正小(接近200px)。 您可以通过添加ie ?width=1000?height=1000来获得更大的图像。 Facebook将返回最接近给定尺寸的图片并保留宽高比。 当传递像?width=1000&height=1000这样的尺寸时,facebook会将图像切割成给定的尺寸(在这种情况下为正方形)。

使用Facebook UserId(Oject ID)来获取图片。

https://graph.facebook.com/173xxxx8635/picture?type=large&redirect=false

它返回带有图片URL的JSON数据。

 { "data": { "is_silhouette": false, "url": "https://fbcdn-profile-a.akamaihd.net/xxx/xyz/1cc066a2cae3f301d" } } 

使用新API的一个好方法是从事件表中获取pic_cover字段,并根据要使用的大小进行处理

我发现,当我遇到这个麻烦时,结果是我下载的图片,而不是我设置的大小。

如果例如我下载了我的所有照片与请求

 [FBRequestConnection startWithGraphPath:@"/me/photos?fields=created_time,name,picture&type=tagged" parameters:nil HTTPMethod:@"GET" completionHandler:^(FBRequestConnection * connection, id result, NSError *error) { NSDictionary * userData = (NSDictionary *)result; NSMutableArray * array = [[NSMutableArray alloc] initWithArray:userData[@"data"]]; for (NSDictionary * dict in eventsToAdd) { UIImage * image = dict[@"picture"] } }]; 

我正在使用字典键search“图片”,因为我想要的图片。

这虽然会给我一个低质量的图片,如果我在这个searchsearch“源”:

 [FBRequestConnection startWithGraphPath:@"/me/photos?fields=created_time,name,source&type=tagged" parameters:nil HTTPMethod:@"GET" completionHandler:^(FBRequestConnection * connection, id result, NSError *error) { NSDictionary * userData = (NSDictionary *)result; NSMutableArray * array = [[NSMutableArray alloc] initWithArray:userData[@"data"]]; for (NSDictionary * dict in eventsToAdd) { UIImage * image = dict[@"source"] } }]; 

如果你在Facebook API浏览器上search照片,然后点击图片和源jpg链接,你可以看到大小和质量的差异。

由于改变这种方法,我设法摆脱使用types参数,因为它似乎没有做出不同的。

注:我正在使用iPhone,而不是iPad或更大的屏幕,所以我不知道这是如何影响更大的屏幕。

@streetlogics的答案工作正常,但只有{object_id}图片。

 http://graph.facebook.com/{object_id}/picture 

但是我也想要这些Feed的共享链接的大图片,这些链接有时没有{object_id} 。 我终于意识到, {picture}缩略图url包含原始网站大图像的编码url:

 https://external.xx.fbcdn.net/safe_image.php?d=AQBe9UvGd0vPbAHP&w=130&h=130&url=http%3A%2F%2Fskift.com%2Fwp-content%2Fuploads%2F2015%2F12%2Fpollution.jpg&cfs=1 

– >包含 – >

 wp-content/uploads/2015/12/pollution.jpg 

所以我做了一个循环,检查{object_id} ,如果不存在,然后从{picture}提取URL:

 if(isset($post['object_id'])) { echo "http://graph.facebook.com/".$post['object_id']."/picture"; } elseif(isset($post['picture'])) { echo urldecode(preg_replace('/&cfs.*/', '', preg_replace('/.*url=/', '', $post['picture']))); } else { echo "no_large_image"; }