如果用户没有登录Facebook,Facebook就像事件处理不起作用

时间:2012-10-25 13:02:13

标签: facebook-like facebook-javascript-sdk

我有一个Facebook页面。我想知道一个人是否点击了类似按钮,并在subscribe.event 'create-edge'回调中做了一些事情。 如果一个人已经登录Facebook,这可以正常工作。 'create-edge'事件被解雇了。但是,如果某人未登录,则此事件不会被解雇。

我没有appId,所以我没有发送任何内容。

代码供您参考:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#" >
<head>
<meta charset="utf-8">
<title>Facebook Like Button</title>
</head>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
  appId      : '', // App ID
  channelURL : '', // Channel File
  status     : true, // check login status
  cookie     : true, // enable cookies to allow the server to access the session
  oauth      : false, // enable OAuth 2.0
  xfbml      : true  // parse XFBML
});
FB.Event.subscribe('edge.create', function(response) {
    alert("say something");
    //my code
});
FB.Event.subscribe('auth.login', function(response) {
    alert('The status of the session is: ' + response.status);
});   
};

// Load the SDK Asynchronously
(function(d){
 var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
 js = d.createElement('script'); js.id = id; js.async = true;
 js.src = "//connect.facebook.net/en_US/all.js";
 d.getElementsByTagName('head')[0].appendChild(js);
}(document));
</script>
<fb:like href="http://www.facebook.com/My_Page" send="false" layout="button_count"     width="450" show_faces="false"></fb:like>
</body>
</html>

我也遇到了这个错误:

  

在调用FB.init()之前调用FB.getLoginStatus()。

似乎我正在接受它,因为我没有appId发送FB.init。 造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

如果用户已经喜欢你的页面并且没有登录,就会发生这种情况。为了解决这个问题,我必须把FB.init()放在一个循环中..像这样:

setInterval(function()
        {
            FB.init({
                appId      : 'app_id'
                channelUrl : 'channel_url'
                status     : true, // check login status
                cookie     : true, // enable cookies to allow the server to access the session
                xfbml      : false  // parse XFBML
            });

        }, 5000);