16

可以使用 Graph api 获取 Facebook 图像的实际图像 url 吗?

例如,对于下面的照片 http://www.facebook.com/photo.php?fbid=357755307655174

实际网址是 https://fbcdn-sphotos-aa.akamaihd.net/hphotos-ak-ash4/252428_530045532341_5136_n.jpg

是否有一些图形 api 方法来实现这一点?

4

5 回答 5

17

默认情况下,当您进行查询时,不会返回节点或边中的所有字段。fields您可以使用查询参数选择要返回的字段或边。

这就是为什么当您检索照片时,您可能只会得到created_time,nameid.

source字段在最新的 API (v2.8) 中已弃用。改为使用images

因此,您的查询可能如下所示:

GET graph.facebook.com/{photo-id}?fields=images

响应应该是这样的:

{

"images":[
    {
        "height":358,
        "source":"https://scontent.xx.fbcdn.net/v/t1.0-9/15327427_585435148333529_xxxxxxxxxxxx_n.jpg?oh=xxxxxxxx&oe=xxxxxxxxx",
        "width":518
    },
    {
        "height":320,
        "source":"https://fb-s-c-a.akamaihd.net/h-ak-xtl1/v/t1.0-0/p320x320/15327427_xxxxxxxxxxxxxx_n.jpg?oh=xxxxxxxxxx&oe=xxxx&__gda__=xxxxxxxxxxxx",
        "width":463
    },
    {
        "height":130,
        "source":"https://fb-s-c-a.akamaihd.net/h-ak-xtl1/v/t1.0-0/p130x130/15327427_xxxxxxxxxxxxxx_n.jpg?oh=xxxxxxxxxxx&oe=xxx&__gda__=xxxxxxxxxxxxxxxxxx",
        "width":188
    },
    {
        "height":225,
        "source":"https://fb-s-c-a.akamaihd.net/h-ak-xtl1/v/t1.0-0/p75x225/15327427_xxxxxxxxxxxxxxx_n.jpg?oh=xxxxxxxxxxxxxxxxx&oe=xxxxxxxxxxxxxxxxxx&__gda__=xxxxxxxxxxxxxxxxxx",
        "width":325
    }
],
"id":"585435148333529"

}
于 2016-12-02T04:46:26.597 回答
13

是否有一些图形 api 方法来实现这一点?

因此,您必须查看照片对象的source字段:

来源:

照片的源图像 - 目前最大宽度或高度为 720 像素,2012 年 3 月 1 日增加到 960 像素

表示有效 URL 的字符串

这将为您提供照片为较小图像上传的原始尺寸,或调整为最大尺寸。每个方向 960 像素。

对于更大的尺寸,您必须检查该images字段:

图片:

照片的 4 种不同存储表示

对象数组,包含高度、宽度和源字段

这“承诺”提供更大的尺寸(fe 2048×1417px)——但请注意,如果原始图像没有要求的那么大,这些条目仍将提供更小的图像。

于 2013-01-09T18:18:00.947 回答
3

请求字段附件,您将在其中找到原始图像。

&fields=picture.type(large),attachments
于 2017-07-11T10:00:38.527 回答
2

似乎缺乏这方面的文档。可以通过这种方式简单地实现。在该网址http://www.facebook.com/photo.php?fbid=357755307655174中,取出fbid表示的图片的 id 。在上述情况下,它是357755307655174。现在对这个对象https://graph.facebook.com/357755307655174进行图形 api 查询。这将返回一个 JSON,其中包含其数据库中存在的所有纵横比及其实际 URL。遵循格式的每个数据字段

{
      "height": 1080, 
      "source": "https://scontent-a.xx.fbcdn.net/hphotos-xpf1/t31.0-8/10296099_566697856780203_6555830953677139074_o.jpg", 
      "width": 1980
}

使用 Graph Explorer 再次检查返回的 JSON 数据的格式。源就是您要查找的。

于 2014-06-16T18:50:54.673 回答
0
    new GraphRequest(
            facebookToken,
            String.format("/%s/photos", idAlbum),
            parameters,
            HttpMethod.GET,
            response -> {
                try {
                    JSONArray photoArray = response.getJSONObject().getJSONArray("data");
                    photosAlbumAfterPagination = response.getJSONObject().getJSONObject("paging").getJSONObject("cursors").getString("after");
                    Gson gson = new Gson();
                    Type type = new TypeToken<List<FacebookPhotoResponse>>() {
                    }.getType();
                    List<FacebookPhotoResponse> list = gson.fromJson(photoArray.toString(), type);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
    ).executeAsync();
于 2020-01-08T11:53:52.753 回答