FB.getLoginStatus()不起作用

dar*_*gho 9 javascript facebook

我正在尝试编写一个代码来检查用户是否登录,并发现FBJS API中有一个内置方法,称为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>
Run Code Online (Sandbox Code Playgroud)

Joc*_*hem 9

前几天我有这个问题,问题是我没有登录Facebook并且我的应用程序处于沙盒模式.Maaaaybe在这里也是一样的,但是无论如何都想建议它.

注意:无法使用的可比组合作为测试用户登录Facebook,该用户无法访问相关应用程序或以非测试/非管理员用户身份登录Facebook并在沙盒中拥有该应用程序模式.


sau*_*bhj 5

顺便提一句。他们又改了。就是现在:

response.authResponse

而不是response.session了。


Bob*_*ett 2

他们改变了它。在响应上运行 console.log ,看看您需要这样测试:

if (response.status=='connected')) {...}
Run Code Online (Sandbox Code Playgroud)

编辑:这是我的大部分登录信息:

<?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;
}
}
?>
Run Code Online (Sandbox Code Playgroud)

以及正文中的 js:

<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>
Run Code Online (Sandbox Code Playgroud)