我正在尝试从Facebook图形API中的共享链接获取图像网址数据。我可以得到这个,但它似乎是一个非常hacky的方式这样做,因为它涉及双服务器调用并依赖于旧的API版本,我宁愿用一个很好的干净方式来使用当前版本的API - 2.5。< / p>
直到2.4我可以使用2.3 API来请求下面的链接的网址我试图获取一个图像
https://graph.facebook.com/v2.3/?id=http%3A%2F%2Fwww.google.co.uk&access_token=xxxxx
它将返回与2.5版API相同的内容:
{
"og_object": {
"id": "383886459583",
"description": "Happy St. David's Day 2016 #GoogleDoodle",
"title": "Google",
"type": "website",
"updated_time": "2016-03-01T10:58:02+0000",
"url": "http://www.google.co.uk/"
},
"share": {
"comment_count": 0,
"share_count": 329164
},
"id": "http://www.google.co.uk"
}
从这里我可以获取og_object ID并进行完全相同的调用,但这次使用ID代替返回包含图像url的scrape信息:
https://graph.facebook.com/v2.3/?id=383886459583&access_token=xxxxx
{
"created_time": "2007-11-07T12:09:31+0000",
"title": "Google",
"type": "website",
"description": "Happy St. David's Day 2016 #GoogleDoodle",
"image": [
{
"height": 210,
"url": "http://www.google.com/logos/doodles/2016/st-davids-day-2016-5676738174517248-thp.png",
"width": 525
}
],
"is_scraped": true,
"updated_time": "2016-03-01T10:58:02+0000",
"url": "http://www.google.co.uk/",
"id": "383886459583"
}
从那里我有一个我可以使用的图像网址然而在2.5中使用相同的方法来获取图像产生这个
{
"created_time": "2007-11-07T12:09:31+0000",
"title": "Google",
"type": "website",
"id": "383886459583"
}
有没有办法使用ID获取2.5中的图像数据,或者更好的方法是使用目标链接的URL进行单个调用并立即返回所有og数据?
这个实例的例子是
var url = "https://graph.facebook.com/v2.3/{{{{id}}}}?access_token={{{{token}}}}";
var token = "xxxxx";
var id = "http%3A%2F%2Fwww.google.co.uk";
url = url.replace('{{{{token}}}}', token);
$.getJSON( url.replace('{{{{id}}}}', id),
function( data ) {
console.log(data);
if (data && data.og_object && data.og_object.id)
$.getJSON( url.replace('{{{{id}}}}', data.og_object.id),
function( data ){
console.log(data, data.image);
//Do something with og data
}
);
}
);
编辑:感谢您指出声明字段CBroe(我更新了标题以更好地反映我想要的答案)但是您标记的副本没有提到嵌套字段,这些字段必须完全回答这一点并将其限制为单个API调用虽然它确实让我走上了正确的道路。完整的解决方案也会返回先前返回的og数据:
https://graph.facebook.com/v2.5/http%3A%2F%2Fwww.google.co.uk?access_token=xxxxx&fields=og_object{id,description,title,type,url,site_name,image,is_scraped,updated_time,audio,video,locale},id,share
其中fields=
是我们的声明字段,而og_object
是顶级JSON对象 - 但是它自己指定它只会给我们减去og_object的缩减版本减去图像。为了获取图像,我们需要使用声明字段的嵌套语法钻取到og_object
以获取图像字段:
og_object{image}
然后我们需要声明所有其他的og_object字段,因为它们不再默认发送(加上其他一些感兴趣的字段),我们只会得到图像字段
fields=og_object{id,description,title,type,url,site_name,image,is_scraped,updated_time,audio,video,locale},id,share
答案 0 :(得分:1)
单个API调用解决方案,它还返回先前返回的og数据:
https://graph.facebook.com/v2.5/?id=http%3A%2F%2Fwww.google.co.uk?access_token=xxxxx&fields=og_object{id,description,title,type,url,site_name,image,is_scraped,updated_time,audio,video,locale},id,share
其中fields
是我们的声明性字段,而og_object
是顶级JSON对象 - 但是它自己指定它只会给我们减去og_object
的缩小版本减去图像。为了获取图像,我们需要使用声明字段的嵌套语法钻取到og_object
以获取图像字段:
og_object{image}
然后我们需要声明所有其他的og_object字段,因为它们不再默认发送(加上其他一些感兴趣的字段),我们只会得到图像字段
fields=og_object{id,description,title,type,url,site_name,image,is_scraped,updated_time,audio,video,locale},id,share