fbml中的Facebook评论数不再适用

时间:2014-05-29 20:06:26

标签: facebook

所以基本上不能使用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之外,还有其他方法吗?

1 个答案:

答案 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;的元素。如果发现任何 - 加载评论计数。

演示在这里:http://jsfiddle.net/2u54Q/

直播结果:http://dyatlovprojects.com/startups/