如何获得Facebook缩略图的放大版本?

问题描述 投票:0回答:2

现在 Facebook API 返回这样的 URL,所有帖子/相册图像的大小均为 130x130 像素:

https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xfp1/v/t1.0-9/s130x130/10801504_570625556403546_6496651209845129904_n.jpg?oh=dcf8ab375252253 2871d2aaab09b6e7e&oe=54E4402F&gda=1424027679_76464aeeaa5d232b8100d01476af4ec7

如何根据该 URL 检索完整(或任何更大尺寸)的图像?

例如这个:

https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xfp1/v/t1.0-9/p417x417/10801504_570625556403546_6496651209845129904_n.jpg?oh=cd2b5cb0d74f73 06c098de9f56dc6e27&oe=54E1F4C1&gda=1423830001_e700bfac39039952bfee55b200c158bf

或者类似的东西?

从 URL 中删除 s130x130 或 /v/t1.0-9/ 或将 _s 替换为 _n 或类似内容的所有其他建议都不再有效 - 我已经尝试过所有这些(如果你不相信我)。有办法实现这一点吗?不知道 Facebook 的人做了什么改变来禁用它......

facebook facebook-graph-api
2个回答
3
投票

经过几个小时的搜索和拔毛后,我找到了一个适合我的解决方案。就我而言,我从 {page-id}/posts 中提取帖子,但我很确定这也对您有用,因为我曾经使用与您提到的相同的方法获取更大的图像。

这对我有用:

bigger_image="https://graph.facebook.com/" + picture_url_from_facebook.match(/_\d+/)[0].slice(1) + "/picture?type=normal";
  • /_\d+/ 匹配任何以下划线(_)开头的子字符串,后跟任何数字(\d 匹配一位数字,\d+ 一遍又一遍地匹配数字,直到失败)
  • match(regex) 返回一个数组,其中包含它可以找到与指定正则表达式匹配的所有字符串
  • 我们获取第一个 ([0]) 元素,因为这将是一个下划线,后跟 Facebook 数据库中图片的 ID
  • 我们将字符串从索引 1 切到末尾,因为下划线不是 ID 的一部分
  • 然后,我们使用图形 API 从 Facebook 获取工作链接,无需任何额外的调用(您可以直接在 img 标签中使用它)

您可以在这个小提琴我们为客户做的这个页面上看到它的实际工作情况

感谢Er Adhish引领解决方案@https://stackoverflow.com/a/27075503/2908761


1
投票
https://graph.facebook.com/{object_id}/picture?type={thumbnail|album|normal}

示例(使用伪造的 object_id 122233334444555):

https://graph.facebook.com/122233334444555/picture?type=large

确保 object_id 不仅仅是项目的 id,而是

object_id
(通常是完整 id 中下划线后面的数字)。

我从一条有用的 Facebook 回复消息中获得了这些类型值,其中写道:

"message": "(#100) type must be one of the following values: thumbnail, album, normal"

代替 ?type=... 你也可以做高度/宽度:

?width=543&height=543
© www.soinside.com 2019 - 2024. All rights reserved.