如何获取Facebook Feed图像的自定义大小缩略图?

时间:2016-01-08 09:36:36

标签: javascript facebook image facebook-graph-api

更新:最初的问题是关于如何获得方形缩略图,这显然是不可能的。我已经改变了问题是如何获得自定义大小的缩略图。宽高比可以保持原样。

我可以将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
            }



        })

    })
})

0 个答案:

没有答案