Facebook Graph API - 页面/帖子 - 如何获取照片链接?
我的目标是从指定的页面获取最新的帖子。通过使用API接口{page_id}/posts
,这个过程很顺利。不过,有些帖子是type="photo"
类型的,它们有picture
和full_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 个回答
你可以用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。
查询 attachments
字段。像这样:
{page_id}/posts?fields=attachments,id,object_id,message,description,full_picture,source
这样做会给你返回完整大小的图片。
请注意,这可能不适用于状态更新的帖子。
使用 picture
字段可以获取缩略图的链接。这是你通过一次API调用能得到的最多的信息。不过,你可以修改这个链接来获取高清图片。可以看看这个回答。
https://stackoverflow.com/a/22897707/1754999
如果你使用的是Picasso库,可以检查加载时是否出现重定向错误(如果那种方法不奏效的话),然后再发起另一个API调用,使用帖子的 object_id
。在这个API调用中,source
字段会返回高清图片,但只有在上面的方法不成功时才使用这个。
编辑:你只需在链接中把 _s
替换成 _n
或 _o
。