我通过Facebook JavaScript SDK使用FQL来请求许多URL的Like和Share计数(总共67个)。除了区分它们的片段标识符(a.k.a。哈希字符串)之外,URL几乎相同。
以下是对API的示例调用:
var queries = {
"101": "SELECT share_count, like_count FROM link_stat WHERE url = \"http://www.example.com/foo/bar/#101\"",
"102": "SELECT share_count, like_count FROM link_stat WHERE url = \"http://www.example.com/foo/bar/#102\"",
"103": "SELECT share_count, like_count FROM link_stat WHERE url = \"http://www.example.com/foo/bar/#103\"",
"104": "SELECT share_count, like_count FROM link_stat WHERE url = \"http://www.example.com/foo/bar/#104\""
};
FB.api('/fql', {
q: queries
}, function(result) {
console.log(result.data);
});
这适用于现代浏览器,但在一些较旧的浏览器中失败,即IE / 8和FF / 3.6。在这些浏览器中,我从Facebook JS SDK库中收到JavaScript错误:
您的浏览器不支持长连接请求。您可以通过升级浏览器或安装最新版本的Flash来解决此问题
我怀疑这个错误与Facebook SDK跨域提出大型POST请求的方法有关,这可以解释为什么旧浏览器无法处理它。
如果我严格限制我一次运行的FQL查询的数量 - 即从67减少到大约8,我可以让它工作,避免错误。但是,考虑到我的要求,这是不可接受的项目。我可能会将单个大型API请求拆分为8-9个较小的请求,但这不是一个理想的解决方案。
有没有更好的方法来检索我需要的数据,同时避免上面的JS错误?我有几个想法,但不知道它们是否可行或如何处理它们:
如果您有任何建议或意见,请告诉我。代码示例也非常受欢迎,因为我很难浏览Facebook的文档,其大部分代码示例都是针对JavaScript以外的语言。
谢谢!