1

花了几个小时在网上搜索后,我发现了很多与此相关的帖子,但似乎没有一个有效,甚至 jsfiddle 上的一些“有效”示例似乎也无效!

当用户在我的网页上点击“喜欢”时,我想注册。

'like' 链接出现,并且确实会弹出一个新窗口供您登录 facebook。但我无法订阅“edge.create”事件。我知道 sdk 加载正常,因为我可以订阅“xfbml.render”事件。

有些帖子说你必须有一个 appId 才能工作[我愿意],但其他人声称它没有。

这是我的代码:

需要注意的一点是,我目前在 //localhost:57477 下运行它,所以我将 like href 设置为 google.com。我确实注意到其中一篇文章指出了最近的 facebook 错误,如果 href 域与网页的域不匹配,则不会触发此事件,但现在将其标记为“已修复”。

<div id="fb-root"></div>
<script>        
    window.fbAsyncInit = function () {
        //console.log('window.fbAsyncInit');

        FB.init({
            appId: 'myappid', 
            status: false,
            cookie: false, 
            xfbml: true
        });

        //Additional initialization code here 
        FB.Event.subscribe('edge.create',
                    function (response) {
                        //console.log('edge.create');
                        alert('edge.create');
                    }
             );

        FB.Event.subscribe('xfbml.render',
                function (response) {
                    //console.log('xfbml.render');
                    alert('xfbml.render');
                }
             );
    };

    // Load the SDK Asynchronously
    (function (d) {
        var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
        if (d.getElementById(id)) { return; }
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        ref.parentNode.insertBefore(js, ref);
    } (document));
</script>

<div href="http://google.com" class="fb-like" data-send="false" data-width="450" data-show-faces="false" data-font="verdana"></div>
4

2 回答 2

1

我知道这是旧线程,但我来到这里遇到了同样的问题。对我有用的是 Facebook AppID 必须属于您的站点所在的域(在 Facebook 应用程序设置中设置)- localhost 将无法正常工作。

于 2013-11-26T00:23:21.390 回答
0

您的代码对我来说看起来不错,我认为问题出在 FB.init() 选项中。

这就是我使用的:

{
  appId: 'myappid',
  authResponse: false,
  channelUrl: "http://url-to-my-channel-url.com",
  cookie: true,
  oauth: true,
  status: true,
  xbfml: true
}

使用这些初始化选项,我可以edge.create用来跟踪有人单击“赞”按钮的时间。

于 2012-09-03T13:13:55.477 回答