远景,但我有一个大约5,000个Facebook ID列表,我想从中获取openGraph数据。我仅想要从公共页面获取数据,而不是从个人fb帐户获取数据。
据我所知,在最新的openGraph API中,如果您尝试查找用户名,则会出现以下错误:
"message": "(#803) Cannot query users by their username (xxxxx)"
这很好,如上所述,我对用户不感兴趣,只是页面。但是,我正在尝试将我的请求一起批量分成50个,这样我就可以尽快得到我的数据(5,000页,1分40秒,否则根据各种来源,我需要每个人提出1个请求第二,或1小时23分钟。)
我想知道是否有任何方法可以向Facebook图形API发送批量GET
请求,该请求显示“如果某个ID存在错误,请忽略它并返回其余ID”?
或者,是否有某种方法来验证哪些ID是页面(图表可接受)以及哪些是用户,以便我可以将页面数据一起批处理?
答案 0 :(得分:0)
我找到了解决方法!值得庆幸的是,如上所述,无法批量请求会将1.5分钟的操作转换为1.5小时的操作。
对我而言,解决方案是Node Fbgraph。它是一个可爱的小模块,可以让您一起批量请求。我离开了这个:
request('https://graph.facebook.com/v2.2/?fields=id,name,website,likes,about,talking_about_count,location&ids=' <<lots of user ids>>'&access_token='<<token>>)
为:
var graph = require('fbgraph');
var token = "whatever";
graph.setAccessToken(token);
var arr = ['name1','name2','name3','name4']
var params = "fields=id,name,website,likes,about,talking_about_count,location";
var batchArr = [];
for(var i = 0; i<arr.length; i++){
tempObj = {
method: "GET",
relative_url: arr[i] + "?" + params
}
batchArr.push(tempObj);
}
graph.batch(batchArr, function(err, res) {
console.log(res);
// res = [{headers and body for #1}, {headers and body for #2} ... etc]
});
这允许“不允许”&#39;用户名失败并收到#803
错误,但允许所有其他用户成功,以便您可以根据需要使用该数据。