Facebook图形API总是返回小图片

时间:2014-06-12 04:31:36

标签: facebook facebook-graph-api-v2.0

我正在使用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而不是发回指向所有缩略图的url?或者如何更改网址以使其指向较大的高分辨率图像?

由于

5 个答案:

答案 0 :(得分:10)

使用用户的ID代替< id>,您可以在以下位置获得更高分辨率的图像:

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

答案 1 :(得分:5)

获得&#34; id&#34;您的新闻Feed使用中的帖子(在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"
}

答案 2 :(得分:3)

从字段中获取ObjectId&#34; object_id&#34;对于来自新闻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"
}

答案 3 :(得分:2)

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

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

这将为您提供一个“附件”字段,其中包含一些媒体。你会发现高分辨率图像。

答案 4 :(得分:0)

您可以通过在帖子的“picture”属性中抓取url查询字符串变量的值来获取原始图片网址并对其进行解码:

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

另一个(更彻底/更重)替代方案是向Facebook Graph API发送批量请求,第一个请求从我/ home /获取,然后第二个请求使用?ids =查找返回的任何内容object_id属性(适用于Facebook上的照片/视频)。

您可以通过向请求正文中的https://graph.facebook.com发送POST请求来执行此操作:

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属性或者来自对象的images数组的一个源属性。