Javascript FB.getLoginStatus()不工作

Javascript FB.getLoginStatus()不工作,javascript,facebook,Javascript,Facebook,我正在尝试编写一个代码来检查用户是否登录, 发现FBJSAPI中有一个内置的方法,叫做getLoginStatus() 我在html中实现了它, 但在某些情况下,getLoginStatus()中的alert()不会被激发 我还尝试在init()处添加channelUrl,但它仍然会这样做 下面是我编写的代码 有人能帮我吗 提前谢谢 <!-- Initialize FB API for use --> <div id="fb-root"></div>

我正在尝试编写一个代码来检查用户是否登录, 发现FBJSAPI中有一个内置的方法,叫做getLoginStatus()

我在html中实现了它, 但在某些情况下,getLoginStatus()中的alert()不会被激发

我还尝试在init()处添加channelUrl,但它仍然会这样做

下面是我编写的代码

有人能帮我吗

提前谢谢

<!-- Initialize FB API for use -->
    <div id="fb-root"></div>
    <script type="text/javascript"> 
    //var curLoc = window.location;
    //var chanURL = curLoc.protocol + "//" + curLoc.hostname + ":" + 
    //curLoc.port + "/channel.html"


        window.fbAsyncInit = function() {
            FB.init({appId: '####', status: true, cookie: true, xfbml: true});       

            FB.getLoginStatus(function(response) {
                  if (response.session) {
                    // logged in and connected user, someone you know
                    alert('logged in');
                  } else {
                    // no user session available, someone you dont know
                    alert('not logged in');
                  }
            });
        };
        (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>

//var curLoc=window.location;
//var chanURL=curLoc.protocol+“/”+curLoc.hostname+“:”+
//curLoc.port+“/channel.html”
window.fbAsyninit=函数(){
init({appId:'#####',状态:true,cookie:true,xfbml:true});
FB.getLoginStatus(函数(响应){
if(response.session){
//已登录并已连接的用户,您认识的人
警报(“已登录”);
}否则{
//没有可用的用户会话,您不认识的人
警报(“未登录”);
}
});
};
(功能(){
var e=document.createElement('script');
e、 类型='text/javascript';
e、 src=document.location.protocol+
“//connect.facebook.net/en_US/all.js”;
e、 异步=真;
document.getElementById('fb-root').appendChild(e);
}());

他们改变了它。运行console.log-on-response,并查看是否需要按如下方式进行测试:

if (response.status=='connected')) {...}
编辑:以下是我的大部分登录信息:

<?php 
// using Facebook PHP SDK (v.3.1.1)
$facebook = new Facebook(array(
  'appId'  => APP_ID
  'secret' => SECRET
));

// See if there is a user from a cookie
$user = $facebook->getUser();

if ($user) {
  try {
     // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
    $user = null;
}
}
?>

只有在fb.init中输入oauth:true时,响应.status=='connected'才会发生


代码在我看来很好,应该可以工作,因为我不确定它为什么不工作

我假设您在链接的代码中用####替换了实际的appId。如果不是,那就是你的问题


假设您已经在这里实际放置了appId,它可能与您正在本地主机上进行测试有关。我相信,如果提供服务的url与给定应用程序Id的应用程序关联的url不匹配,javascript将无法运行。前几天,我遇到了这个问题,问题是我没有登录Facebook,我的应用程序处于沙箱模式。Maaaybe这里也是一样的,longshot但还是想建议一下


注意:不起作用的类似组合包括:以无法访问相关应用程序的测试用户身份登录Facebook,或以非测试/非管理用户身份登录Facebook,并将应用程序置于沙箱模式。

我也遇到了同样的问题。我是由FB应用程序设置中的“沙盒模式”引起的。启用时,它不会触发getLoginStatus()响应。可能是因为不知道您在未登录时是否是注册开发人员。

顺便说一句。他们又更改了它。 现在是:

响应。authResponse


不再是响应。会话。

我不是说这对你有用,但我部署的应用程序也有类似的问题。它在我的本地主机上运行良好,但在部署到Heroku时就不行了。我意识到,在Facebook应用程序设置中,我的url都设置为本地url——当我将其更改为部署的应用程序url时,它将其修复。

感谢Bobbi的回复。我已经将if语句更改为response.status,但仍然没有响应,我也使用了console.log,但它没有在firebug上输出任何响应。我还尝试通过启用oauth来使用authResponse,但情况相同。如果我使用localhost测试它有关系吗?如果您的路径错误,当您尝试重新引导登录时,FB会抱怨。我想你会注意到的。我一直使用localhost,只需在开发者页面上输入它作为应用程序站点url。RE console.log。如果什么都没有,请查看是否调用了FBAsyncint,然后从那里进行调试。感谢user911086的评论。我也不知道为什么它不起作用。
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
window.fbAsyncInit = function() {
    FB.init({
      appId   : '<?php echo $facebook->getAppId(); ?>',
      status  : true,
      cookie  : true, 
      oauth: true,
      channelUrl : MY_CHANNEL_URL,
      xfbml   : true
    });

    FB.getLoginStatus(function(response) {
        console.log( response );
        if ((response.status)&&(response.status=='connected')) {
            loadStreamInto ( $("#FBmessages") );
        } else {

        }
    });
};
</script>