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

时间:2014-11-12 01:12:32

标签: facebook facebook-graph-api

目前Facebook API正在返回这样的网址,其中所有帖子/相册图片的尺寸为130x130像素:

  

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

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

例如这一个:

  

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

或类似的东西?

从网址中删除s130x130的所有其他建议,或/v/t1.0-9/,或用_n替换_s或类似的任何内容都不再有效 - 我已经尝试过了所有(如果你不相信我,请自己尝试)。有没有办法让这种情况发生?不确定Facebook的人已经改变了什么来禁用...

2 个答案:

答案 0 :(得分:3)

经过几个小时的搜索和拔出头发后,我发现了一个适合我的解决方案。在我的情况下,我从{page-id} /帖子中提取帖子,但我非常确定这对你也有用,因为我曾经使用与你提到的方法相同的方法来获取更大的图像。

这对我有用:

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标签)

您可以在@ this fiddlethis page we did for a client

中查看此操作

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

答案 1 :(得分:0)

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

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

https://graph.facebook.com/122233334444555/picture?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