我有几个Facebook上的按钮,这些按钮正在通过XFBML渲染。单击它们后,它们似乎可以使用,因为它们从标准按钮更改为“竖起大拇指”的图标,该图标说“您喜欢这样”。但是,在一两秒钟之后(我假设要击中FB的服务器并返回所需的时间),它自动不利于本身,转回原始的类似按钮。

观看我在这里的意思的视频。

我的代码非常标准:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" lang="en">

...

<fb:like href="http://www.example.com/valid/path" layout="button_count" ref="recipe_preview" />

...

<script type="text/javascript">
    window.fbAsyncInitExt = function() {
        FB.Event.subscribe('edge.create', function(response) {
            alert('Facebook Like Button: ' + response);
        });
    };
</script>

...

<div id="fb-root"></div>
<script type="text/javascript"> 
    window.fbAsyncInit = function() {
        FB.init({
            appId:  'XXXXXXXXXX',  // my app ID is here
            status: true,
            cookie: true,
            xfbml:  true
        });
        if (typeof(fbAsyncInitExt) == 'function') {
            fbAsyncInitExt();
        }
    };
    (function() {
        var e = document.createElement('script');
        e.type = 'text/javascript';
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
    })();
</script> 

编辑: 对于它的价值,我还试图查看Facebook是否正在发送任何日志信息,但似乎并非如此:

<script type="text/javascript">
    window.fbAsyncInitExt = function() {
        FB.Event.subscribe('edge.create', function(response) {
            alert('Facebook Like Button: ' + response);
            console.debug(response);
        });
        FB.Event.subscribe('fb.log', function(response) {
            alert('LOG: ' + response);
            console.debug(response);
        });
    };
</script>
有帮助吗?

解决方案

经过大量挖掘,我终于发现了错误的源头。事实证明,该页面由 href 我的价值 fb:like 标签至少需要一个 fb:app_id 或者 fb:admins 元标记在头上。以供参考: http://developers.facebook.com/docs/opengraph

其他提示

在尝试了所有解决方案之后,我无法找到任何工作,但是当您从Facebook开发人员页面中获取代码时,我尝试使用“实时供稿”应用程序ID,而不是默认的“实时流”,这对我有用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top