可以使用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方法来实现这个目标?
答案 0 :(得分:13)
默认情况下,并非您返回节点或边缘中的所有字段 进行查询。您可以选择所需的字段或边 使用
fields
查询参数返回。
这就是为什么当您检索照片时,您可能只会获得created_time
,name
和id
。
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数据的格式。源代码就是您要找的。 p>
答案 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();