可以使用 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 方法来实现这一点?
可以使用 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 方法来实现这一点?
默认情况下,当您进行查询时,不会返回节点或边中的所有字段。
fields
您可以使用查询参数选择要返回的字段或边。
这就是为什么当您检索照片时,您可能只会得到created_time
,name
和id
.
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"
}
是否有一些图形 api 方法来实现这一点?
因此,您必须查看照片对象的source
字段:
来源:
照片的源图像 - 目前最大宽度或高度为 720 像素,2012 年 3 月 1 日增加到 960 像素
表示有效 URL 的字符串
这将为您提供照片为较小图像上传的原始尺寸,或调整为最大尺寸。每个方向 960 像素。
对于更大的尺寸,您必须检查该images
字段:
图片:
照片的 4 种不同存储表示
对象数组,包含高度、宽度和源字段
这“承诺”提供更大的尺寸(fe 2048×1417px)——但请注意,如果原始图像没有要求的那么大,这些条目仍将提供更小的图像。
请求字段附件,您将在其中找到原始图像。
&fields=picture.type(large),attachments
似乎缺乏这方面的文档。可以通过这种方式简单地实现。在该网址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 数据的格式。源就是您要查找的。
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();