0

我知道关于FB 的 Graph API 以及如何检索全尺寸图像的许多现有问题。

但是其中许多是关于获取用户个人资料图片的,这些图片的回答是“/<userid>/picture”或类似的东西。我需要知道如何从页面提要中获取发布的图像,所以这不是我想要的。full_image然后是用“在您的搜索查询中使用”回答的问题。

好吧,此时我的问题开始了。full_image实际上不是完整的图像。它仅限于 720x720 像素。

让我们看一个例子: 在 Facebook 的 Graph API Explorer 中探索这张来自 SPIEGEL ONLINE 的图片。

Graph API 请求的给定路径是:

/38246844868_10154299256109869?fields=full_picture,picture,permalink_url,type,object_id

响应如下:

{
  "full_picture": "https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/13450864_1068539139897737_5236884236245491903_n.jpg?oh=20cc415e7931b8eb8a6228ab253bfa53&oe=57E23B8B",
  "picture": "https://scontent.xx.fbcdn.net/v/t1.0-0/s130x130/13450864_1068539139897737_5236884236245491903_n.jpg?oh=37c4263e047f841da7243c040a4f279d&oe=57C6469E",
  "permalink_url": "https://www.facebook.com/spiegelonline/posts/10154299256109869",
  "type": "photo",
  "object_id": "1068539139897737",
  "id": "38246844868_10154299256109869"
}

如您所见,我请求了picture(这只是一个拇指)和由full_picture. 不幸的是,这张照片不是完整的,而是一张调整大小的。图片的 URL 中甚至提到它最大只有 720x720。

这里是:https: //scontent.xx.fbcdn.net/v/t1.0-9/s720x720/13450864_1068539139897737_5236884236245491903_n.jpg ?oh=20cc415e7931b8eb8a6228ab253bfa53&oe= 57E238

访问后面的 Facebook 页面时,permalink_url您会看到图片帖子。

我们开始吧:https ://www.facebook.com/spiegelonline/posts/10154299256109869

当以全屏模式打开发布的图像,然后右键单击它以显示图像文件时,您会看到图像将比 720x720 大得多。

它是:https ://scontent-frt3-1.xx.fbcdn.net/t31.0-8/13422344_1068539139897737_5236884236245491903_o.jpg

请将该 URL 与 API 端点响应的 URL 进行比较,如上所示。甚至服务器也不一样。因此,正如在 SO 上的其他几个问题中提到的那样,将“_n”替换为“_o”并不是一个简单的解决方案。

我的问题是:如何使用 Graph API 获取完整大小的图像 URL?

TL;DR: Facebook 的 Graph API 似乎通过使用full_image. 那么,如何检索实际的完整(即未调整大小的)图像。

4

1 回答 1

1

在再次使用 Graph API Explorer 后,我终于找到了解决方案。它比我想象的要简单得多。

您需要做的只是以下几个步骤:

  1. 只需请求这条路径(这次没有full_picture访问器,这里只有object_id重要的):

/38246844868_10154299256109869?fields=object_id

  1. 从APIobject_id的响应中获取:
{
  "object_id": "1068539139897737",
  "id": "38246844868_10154299256109869"
}

在这个例子中它是"1068539139897737".

  1. 现在,请求所有images上述内容object_id

/1068539139897737?fields=images

  1. 响应是这样的 JSON:
{
  "images": [
    {
      "height": 2048,
      "source": "https://scontent.xx.fbcdn.net/v/t31.0-8/13422344_1068539139897737_5236884236245491903_o.jpg?oh=e923e167d258e77c12caf422d98b44aa&oe=59968118",
      "width": 1536
    },
    {
      "height": 1280,
      "source": "https://scontent.xx.fbcdn.net/v/t31.0-8/p960x960/13422344_1068539139897737_5236884236245491903_o.jpg?oh=7a5086e29957b222c2fd1136f3640c98&oe=598633CD",
      "width": 960
    },
    // … many others in between here …
    {
      "height": 225,
      "source": "https://scontent.xx.fbcdn.net/v/t1.0-0/p75x225/13450864_1068539139897737_5236884236245491903_n.jpg?oh=26d94247c4e34a69fb0db3fb1ae213b5&oe=599353F9",
      "width": 168
    }
  ],
  "id": "1068539139897737"
}
  1. images按大小向下排序的列表中,只需获取第一个条目。得到它source- etvoilà - 这是全貌。
于 2017-04-17T18:58:30.020 回答