Facebook API - FB.Event.subscribe('edge.create')不起作用

时间:2012-09-03 13:04:18

标签: javascript facebook facebook-graph-api

花了几个小时在网上搜索我发现了许多与此相关的帖子,但似乎都没有用,甚至jsfiddle上的一些“工作”示例似乎无法正常工作!

我想在用户点击我的网页上的“赞”时注册。

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

有些帖子说你必须有一个appId才能工作[我这样做]但是其他人声称它没有用。

这是我的代码:

需要注意的一点是,我目前正在// localhost:57477下运行,所以我将类似的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>

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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跟踪有人点击“赞”按钮的时间。