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

14

我想使用Facebook JavaScript JDK和jQuery来检查用户是否已经在Facebook上登录。

但是即使设置了10秒的超时时间,我仍然收到以下错误信息:

FB.getLoginStatus() called before calling FB.init().

以下是我的代码:

<script type="text/javascript" src="/js/jquery-1.2.3.pack.js" />
<div id="fb-root"></div>
<script src="http://connect.facebook.net/de_DE/all.js">  </script>
<script type="text/javascript">
    jQuery('document').ready(
    function(){
        FB.init({
                status : true, 
                cookie : true, 
                xfbml  : true 
        });

        setTimeout(function(){

            FB.getLoginStatus(function(response) {
                if (response.session) {
                      jQuery('div#likeButtonWhatsThisText').remove();
                }
            });         
        }, 10000)       
    }
    )
</script>

有什么想法可以让这个工作起来吗?

谢谢,克里斯汀。


我敢打赌错误信息只是错误的,实际上发生的情况是你的“init”调用没有做下一次调用所需的某些操作。 - Pointy
3个回答

23

你好,我认为你在调用fb.init时没有传递你的应用程序ID。 应该像这样:

FB.init({
        appId: "Your API ID",
        status: true,
        cookie: true,
        xfbml: true
});

我希望这会起作用。


我有时仍然会遇到这个错误,即使我已经指定了我的应用程序ID。有人知道可能发生的其他原因吗? - Yuval A.

6

虽然我不是专业人士,但你试过这个方法吗:

FB.Event.subscribe('auth.login', yourFunc); 

你的函数 yourFunc 应该只有一个参数 (response),在这个参数中检查以下内容:

response.status == 'connected'

0
调用init()函数就像这样,对我来说很有效。
FB.init({
        appId: 'Your App ID',
        cookie: true,
        xfbml: true,
        version: 'v2.10',
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接