10

我正在使用 facebook graph api,我发出这个命令

/V2.0/我/家

它返回类似:

  "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 页面上,它会显示同一图像的更大的高分辨率版本。

这对于它发回的所有图片 url 都是一样的。有些 url 以 _s.jpg 结尾,我可以将其更改为 _n.jpg 以使其成为更大的图像,但这不适用于末尾没有 _s.jpg 的 url,例如上面的 url。

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

谢谢

4

5 回答 5

10

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

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

于 2014-06-14T06:41:48.393 回答
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"
}
于 2014-08-07T20:43:09.520 回答
3

从您的新闻提要中的特定帖子的“object_id”字段中获取 ObjectId

使用此 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"
}
于 2014-07-23T19:00:34.220 回答
2

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

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

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

于 2014-12-09T09:20:29.513 回答
0

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

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

另一种(更彻底/更重)的替代方法是向 Facebook Graph API 发送批处理请求,第一个请求从 me/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 属性或源属性之一。

于 2014-08-15T07:30:50.063 回答