【问题标题】:How to get larger version of Facebook's thumbnail images?如何获得更大版本的 Facebook 缩略图?
【发布时间】:2015-01-08 18:00:05
【问题描述】:

现在,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=dcf8ab3752522532871d2aaab09b6e7e&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=cd2b5cb0d74f7306c098de9f56dc6e27&oe=54E1F4C1&gda=1423830001_e700bfac39039952bfee55b200c158bf

或者类似的?

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

【问题讨论】:

  • 哪个 API 调用为您提供了该 URL?您可以首先向 API 请求更大的图像,而不是尝试操纵 URL 客户端
  • 它来自一个社交流插件: url = url = cp.length > 1 ? 'graph.facebook.com' + cp[1] + '/photos?fields=id,link,from,name,picture,images,cmets&limit=' + n : frl + encodeURIComponent('facebook.com/feeds/page.php?id=' + id + '&format= rss20');
  • cp[1] 是什么类型的 Facebook 对象?用户、帖子、页面等?
  • 这是页面 ID,该调用返回:facebook.com/feeds/page.php?id=352032574929513&format=rss20 正如您在结果页面中看到的那样,所有图像都以 130x130 像素拇指返回,我不知道如何获得更大图像,或者如果有其他供稿来获取更大的图像...
  • 该 page.php 端点已被弃用,并不是 API 本身的一部分 - 我将在下面添加一个答案,展示如何获取页面帖子的完整尺寸个人资料图片

标签: facebook facebook-graph-api


【解决方案1】:

经过几个小时的搜索并拔掉头发后,我找到了适合我的解决方案。在我的情况下,我从 {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 标签中使用它)

您可以在@this fiddlethis page we did for a client 看到这个工作原理

感谢Er Adhish为解决问题提供了指导@https://stackoverflow.com/a/27075503/2908761

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

      猜你喜欢
      • 2013-10-21
      • 2015-10-24
      • 2014-10-24
      • 2012-01-08
      • 2014-02-17
      • 2015-03-23
      • 2012-09-09
      • 2012-04-05
      • 1970-01-01
      相关资源
      最近更新 更多