2014-06-12 53 views
10

我使用Facebook的图形API,我发出此命令Facebook的图形API总是返回小图片

/V2.0/me/home

返回类似:

"id": "xxxxxxxxxxxxxxxxxxxxxx", 
    "from": { 
    "id": "xxxxxxxxxxxxxxxxx", 
    "name": "Roger" 
    }, 
    "story": "Roger shared a link.", 
    "picture": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQB2VeutsxS6ht3i&w=154&h=154&url=https%3A%2F%2Fwww.facebook.com%2Fads%2Fimage%2F%3Fd%3DAQIuWnred6mG7Ti280buWL8uhE00-W2H0Eom1PzNa3Av0x3y7JieMPqLmxAFYsCRKh0Zr8u_PyWO1lFbTknlj_DaksBoFiaD8d2yIWLOGNYKie1w9Kff6vyyElxnfrlHH7uSRhwycKNakg7szgWtBBwC", 
    "link": "http://xxxxxx.com", 

问题在于上面的“图片”标签,其中图片的网址是在之后给出的。

如果您将该网址粘贴到您的浏览器中,您将获得一个小缩略图大小的图像,但在真实的Facebook页面上,它会显示相同图像的更大高分辨率版本。

这与发送回来的所有照片网址相同。有些网址以_s.jpg结尾,我可以将其更改为_n.jpg以使其成为更大的图像,但对于末尾没有_s.jpg的网址不起作用,如上面的网址。

任何人都知道要使用的facebook-graph-api命令,以便Facebook发送指向较大高分辨率图像的url,而不是发回指向所有缩略图的网址?或者如何改变网址,使其指向大型高分辨率图像?

感谢

+0

@ N S:你有没有得到高分辨率的图像。 ? –

回答

10

到位<ID>的使用用户的ID,你可以得到一个更大的分辨率的图像:

http://graph.facebook.com/<id>/picture?type=large

+0

无法正常工作。 http://graph.facebook.com/10150381045528031/picture?type=normal。 –

+0

此方法效果很好,但类型已更改。支持的类型是“缩略图”,“正常”和“专辑”。 –

+0

它的工作原理!我几个小时都在搞这个。 –

3

从外地 “OBJECT_ID” 获取的ObjectId特定职位来自您的新闻Feed

使用此object_id值进行单独的Graph API调用,如下所示 -

https://graph.facebook.com/10152199489086727?fields=images&access_token=

这将返回此帖子不同大小的图像列表。

输出示例:

{ 
    "images": [ 
    { 
     "height": 462, 
     "source": "https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/10302057_10152199489086727_707407897349696496_n.jpg", 
     "width": 616 
    }, 
    { 
     "height": 320, 
     "source": "https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/p320x320/10302057_10152199489086727_707407897349696496_n.jpg", 
     "width": 426 
    },.... .. 
    ], 
    "created_time": "2014-07-23T18:15:16+0000", 
    "id": "10152199489086727" 
} 
+0

Iam获取错误:'不支持的获取请求。请在developers.facebook.com/docs/graph-api –

+0

上阅读Graph API文档此'object_id'对于'link'类型的帖子不存在? –

+1

每种类型似乎需要不同的方法我问了一个关于它的问题,以创建这些方法的协作列表,但我在10分钟内得到了2票反对,这是一个耻辱:S http://stackoverflow.com/questions/29233382/getting-large-images-from-facebook-with-graph-api-v2-2-by-typefeed-post-photo-l – nach

5

后你会得到一个职位的 “ID” 在您的新闻饲料中使用(在JavaScript)

pic_url = 'http://graph.facebook.com/'+ post_id +'?fields=full_picture&access_token="+ response.authResponse.accessToken; 
在您的要求

回应示例:

{ 
    "full_picture": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQBbJqpkt2Jhf0VF&url=http\u00253A\u00252F\u00252Fwww.mixofpix.eu\u00252Fwp-content\u00252Fuploads\u00252F2014\u00252F08\u00252Flampa-oblak.jpg", 
    "id": "1407721719477425_1467737580142505", 
    "created_time": "2014-08-07T20:00:51+0000" 
} 
+0

iam getin错误:'不支持的获取请求。请在https://developers.facebook.com/docs/graph-api' –

+0

中阅读Graph API文档1.您是否有访问令牌,而不是上面的pic_url中的'access_token'? –

+0

对不起,我找不到你。只有一个access_token有权利? –

0

您可以通过在后的“图像”抢夺财产的url查询字符串变量的值获得原始图片的URL,并对其进行解码:

var origImgSrc = decodeURIComponent(picture.match(/(url=)([^&]+)/)[2]); 

另一种更彻底更重要的方法是向Facebook Graph API发送批量请求,第一个请求从我/ home /获取提要,然后第二个请求使用?id =查找任何返回的object_id属性(用于Fac上的照片/视频电子书)。

你会做到这一点通过发送POST请求https://graph.facebook.com在请求正文如下:

access_token=VALID_ACCESS_TOKEN&batch=[{%20%22method%22:%22GET%22,%22name%22:%22me_home%22,%20%22relative_url%22:%22me/home?fields=object_id,full_picture%22,%20%22omit_response_on_success%22:false},%20{%20%22method%22:%22GET%22,%20%22depends_on%22:%22me_home%22,%20%22relative_url%22:%22?ids={result=me_home:$.posts.data.*.object_id}%22}] 

然后,你可以做一些花哨的JS解析得到无论是full_picture财产或源属性之一来自对象的图像数组。

2

尝试在您的请求中指定attachments字段。

/v2.0/me/home?fields=attachments 

这会给你一个'附件'字段,里面有一些媒体。你会发现有高分辨率的图像。

+0

这应该是公认的答案! –