Facebook Graph API - 页面/帖子 - 如何获取照片链接?

3 投票
3 回答
4206 浏览
提问于 2025-04-18 08:41

我的目标是从指定的页面获取最新的帖子。通过使用API接口{page_id}/posts,这个过程很顺利。不过,有些帖子是type="photo"类型的,它们有picturefull_picture这两个字段。但是,问题是这些图片的链接很小,更像是缩略图,而不是正常大小的图片。

我注意到最近每个照片类型的帖子都有一个新的字段object_id。如果我请求{object_id}/picture?redirect=false,就会返回一个图片的链接。

我想在从{page_id}/posts获取帖子时,顺便获取{object_id}/picture的链接,但我找不到办法做到这一点。我尝试把请求写成{page_id}/posts?fields=object_id.fields(picture),结果却得到了Subfields are not supported by object_id的错误提示。

我该如何获取页面发布的图片链接呢?

编辑

为了更清楚我的问题:

我想获取指定页面的所有最新帖子。对于type="photo"类型的帖子,我希望能获取图片链接,此外还想要其他字段,比如消息内容。最好是不用额外请求Graph API。

我通常的请求是这样的:

{page_id}/posts?fields=id,object_id,message,description,full_picture,source

这个请求会带回page_id的各种帖子。full_picture是一个缩略图的链接。如果可以的话,我希望能获取到同一张图片的更大尺寸的链接。

3 个回答

0

你可以用FQL来做到这一点:

select pid, object_id, src_big from photo where pid in (select attachment.media.photo.pid from stream where source_id={PAGE_ID} and type=247)

这里的 {PAGE_ID} 是你页面的数字ID。

2

查询 attachments 字段。像这样:

{page_id}/posts?fields=attachments,id,object_id,message,description,full_picture,source

这样做会给你返回完整大小的图片。

请注意,这可能不适用于状态更新的帖子。

0

使用 picture 字段可以获取缩略图的链接。这是你通过一次API调用能得到的最多的信息。不过,你可以修改这个链接来获取高清图片。可以看看这个回答。

https://stackoverflow.com/a/22897707/1754999

如果你使用的是Picasso库,可以检查加载时是否出现重定向错误(如果那种方法不奏效的话),然后再发起另一个API调用,使用帖子的 object_id。在这个API调用中,source 字段会返回高清图片,但只有在上面的方法不成功时才使用这个。

编辑:你只需在链接中把 _s 替换成 _n_o

撰写回答