更新:最初的问题是关于如何获得方形缩略图,这显然是不可能的。我已经改变了问题是如何获得自定义大小的缩略图。宽高比可以保持原样。
我可以将Using facebook graph api how to get news feed with large picture size if the feed type is photo?的解决方案拼凑起来,但我希望能有更好的解决方案。
我可以使用
获取图像尺寸列表https://graph.facebook.com/v2.0/{object_id}?access_token={token}
然后我可以通过该列表进行搜索,找到一个足够大但不是太大的列表并再次请求该图像。
或者,按照Facebook Graph API : get larger pictures in one request中的答案,我可以使用
直接在后期Feed请求中返回完整尺寸的图片https://graph.facebook.com/v2.2/{object_id}/posts?fields=full_picture
但我不需要全尺寸图片。有没有办法在第二个例子中做某些事情,但是对于任意图像尺寸,或者至少对于你从第一个例子得到的预设之一?
原始问题:
我使用下面的Javascript将自定义样式的facebook Feed转储到网站上。它显示日期和发布的文本,如果有图像,它也会抓取它。看起来Facebook默认图像宽度为130px,并保持原始图像的宽高比。但Facebook有一种生成方形版图像的方法吗?
我在图片网址中看到/s130x130/
但不幸的是,更改后会导致没有返回任何内容,因为看起来查询字符串中只有FB知道的随机ID。我在某处看到了不同大小的方形缩略图的示例,但是每个大小的随机ID都有所变化。那么有没有办法在我的Javascript中检索我的图像的方形版本,如果没有,有什么办法可以做到吗?
$(function() {
$.getJSON("https://graph.facebook.com/v2.2/1551867661729482/feed?access_token=XXXXXXXX", function(data) {
var maxPosts = 3
$.each(data.data, function(x) {
if (maxPosts > 0) {
if (data.data[x].from.name == "D'Arts") {
var message = data.data[x].message || //normal post
data.data[x].story.replace(/^You /, '').capitalizeFirstLetter() || //other updates without user text
"";
var pic = data.data[x].picture;
pic = pic ? '<img class="fb-thumb" src="' + pic + '"></img>' : '';
var date = new Date( data.data[x].created_time ).toString().replace(/.* (\w\w\w \d\d) .*/,"$1");
var link = data.data[x].link;
$('#Facebook .feed-goes-here').append('<a href='+(link||'""')+' class="fb-post clearfix"><h3>'+date+'</h3>' + pic + '<p>' + message + '</p></a>');
maxPosts--;
}
} else {
return false
}
})
})
})