如果用户未登录Facebook,则不会触发FB.getLoginStatus

Nit*_*man 10 javascript facebook oauth oauth-2.0

我正在开发一个与Facebook集成的Facebook应用程序,我正试图获得用户的FB会话.据我了解,常见的使用场景如下.

  1. 呼叫 FB.init()
  2. 打电话FB.getLoginStatus给它一个适当的回调.

我运行了以下代码(应用程序ID).

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
    <!--

    function init(){
        FB.init({
            appId  : '9999999999999',
            status : true, // check login status
            cookie : true, // enable cookies to allow the server to access the session
            xfbml  : true, // parse XFBML
            channelUrl : 'http://127.0.0.1:8888/channel.html', // custom channel
            oauth  : true // enable OAuth
        });
        alert('going to call FB.getLoginStatus ');

        FB.getLoginStatus(function(response) {
            alert('whoo hoo!!! getLoginStatus called the callback');
        });
    }
    init();
    //-->
</script>
Run Code Online (Sandbox Code Playgroud)

如果用户已在同一浏览器会话中登录到Facebook,则一切都按预期工作 - 返回填充的_response.authResponse_.但是,如果用户未登录到Facebook,则根本不会触发回调.检查浏览器网络日志,我看到Facebook返回以下响应(请求来自http://www.facebook.com/dialog/oauth?).

应用程序错误:获取所请求应用程序的数据时出现问题.该应用程序可能无效,或者可能存在暂时的故障.请稍后再试.

我在Chrome和Firefox(Mac)上查看过此内容.


更新

我要感谢所有回复的人.

的评论有答案.

谢谢本 - 你给我带来了很多挫折感.

Nit*_*man 12

原因是最近的一个错误,它只会影响沙盒模式.我关闭了沙箱模式,它就像一个魅力.

  • 链接现在已经死了. (2认同)