所以基本上不能使用html5框来评论计数:
HTML:
<fb:comments-count href="http://example.com"></fb:comments-count> comments
JS SDK包含如下:
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=233176953542656&version=v2.0";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
并且..而不是查询正常的图形注释端点,它执行了一个fql查询https://graph.facebook.com/v2.0/fql?callback...
,作为响应,它提出了:
/**/ FB.__globalCallbacks.f2670b77d1e44b({
"error": {
"message":"An access token is required to request this resource.",
"type":"OAuthException",
"code":104
}
})
所以我要么必须使用iframe方法来加载评论计数(每页10张iframe ......我认为这很多)或者要求用户在Facebook上查看评论编号?
除了编写自己的包装器以调用图形API之外,还有其他方法吗?
答案 0 :(得分:1)
现在写了一个自己的图形包装器:
HTML:
<a href="http://example.com">
<span class="ext-fb-comments-count" data-href="http://example.com"></span> comments
</a>
图形包装器放到模板的末尾:
<script>
(function(){
var items = {};
var urls = [];
$('.ext-fb-comments-count').each(function(){
var obj = $(this);
var href = obj.data('href');
items[ href ] = obj;
urls.push(encodeURI(href));
});
urls.length && $.get('http://graph.facebook.com/?ids=' + urls.join(','), null, function(r){
for(key in r) items[key].html( r[key].comments?r[key].comments:'0' );
});
})();
</script>
它会查找带有类&#39; ext-fb-comments-count&#39;的元素。如果发现任何 - 加载评论计数。