从Facebook Graph API获取全尺寸图片

8
我正在使用图形API端点/PAGE_ID/posts来获取Facebook页面中的所有帖子。 现在我想要这些帖子中的完整尺寸图片。返回对象的picture属性只给了我一个裁剪过的版本。
通过这些帖子的对象ID和API端点/OBJECT_ID/picture,我只能得到图片的小号、普通和相册大小版本。但是通过对URL进行一些修改,我设法获得了全尺寸的图片。
举个例子:
这个链接:
https://graph.facebook.com/10152843929471041/picture

重定向到这个链接:
https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/s720x720/10838228_10152843929471041_5251228402651650719_n.jpg

我从URL中删除了720x720,以获得此URL:
https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-xpa1/t31.0-8/s/10838228_10152843929471041_5251228402651650719_n.jpg

这最终是全尺寸的图片。
我认为,我可以通过正则表达式模式实现这种修改。但现在我的问题是,我如何从原始URL(第一个URL)获取重定向后的URL。
有任何想法或更简单的解决方案吗?
2个回答

13

以下是获取更大图片的方法:

/OBJECT-ID/picture?width=500&height=500
或者:
/OBJECT-ID/picture?type=large

也可以查看此帖子中的答案:Facebook Graph API:在一个请求中获取更大的图片

编辑:由于无法使用对象ID,您可以从此响应中获取图像:

https://graph.facebook.com/10152843929471041

注意查看“images”数组。


这对使用对象 ID 获取的图片无效。我只能使用缩略图、普通大小和相册。 - Simon Knittel
谢谢!你的编辑解决了问题。 - Simon Knittel

0

我们也可以请求一个photo对象的images集合,然后搜索最高分辨率条目

请参见文档。 代码:

MyFacebookWrapper.getBestImage = function(photoId) {
    var deferred = new $.Deferred();
    var params = { fields: "images" };

    FB.api("/" + photoId, "get", params,
        function (response) {
            console.log("MyFacebookWrapper.getBestImage, response:");
            console.log(response);

            var images = _.sortBy(response.images, 'width');
            var best = _.last(images)

            deferred.resolve(best); 
        }
    );

    return deferred.promise();
};

使用方法:

MyFacebookWrapper.getBestImage("photo Id ...").then(function(image) {
    console.log(image);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接