Facebook如何使用Graph API获取实际照片网址?

时间:2013-01-09 17:56:02

标签: facebook facebook-graph-api

可以使用Graph api ??

获取Facebook图像的实际图像网址

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

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

是否有一些图形api方法来实现这个目标?

5 个答案:

答案 0 :(得分:13)

  

默认情况下,并非您返回节点或边缘中的所有字段   进行查询。您可以选择所需的字段或边   使用fields查询参数返回。

这就是为什么当您检索照片时,您可能只会获得created_timenameid

最新API(v2.8)中不推荐使用

source字段。请改用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"

}

答案 1 :(得分:10)

  

是否有一些图形api方法来实现这个目标?

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

  

源:

     

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

     

表示有效网址的字符串

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

对于更大的尺码,您必须查看images字段:

  

图片:

     

照片的4种不同存储表示

     

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

这个“承诺”可以提供更大的尺寸(f.e.2048×1417px) - 但请注意,如果原始图像没有所要求的那么大,这些条目仍将提供较小的图像。

答案 2 :(得分: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数据的格式。源代码就是您要找的。

答案 3 :(得分:2)

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

&fields=picture.type(large),attachments

答案 4 :(得分: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();