错误:在调用FB.init()之前调用了FB.login()函数。

20

我使用这段Facebook登录按钮代码:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({
    appId  : 'myActualId',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true  // parse XFBML
  });
</script>
<fb:login-button show-faces="false" width="200" max-rows="1"></fb:login-button>

但调试控制台显示了这个错误: 在调用FB.init()之前调用了FB.login()。

我创建了一个测试页面,以便可以看到我的错误: http://www.comehike.com/test_fb_connect.php

我不知道我做错了什么。非常感谢任何帮助!

谢谢, Alex

5个回答

48
如果您向 init() 传递不存在的 FB 应用程序密钥,则只会收到“在调用 FB.init() 之前调用了 FB.login()”错误。
确保您没有做同样的事情。

1
我能以某种方式检查初始化是否成功吗? - Lihai
23
жңүи¶ЈпјҢдёҖејҖе§ӢжҲ‘д»Ҙдёәиҝҷ家收е…Ҙиҫҫ80дәҝзҫҺе…ғзҡ„е…¬еҸёдјҡжңүи¶іеӨҹзҡ„иө„жәҗзј–еҶҷif (appId.isInvalid()) throw new Error('invalid appId')гҖӮи°ўи°ўFacebook <3гҖӮ - Dirk Boer
2
你好,我是一名来自2021年的时间旅行者,想告诉你们虽然这个问题还没有被解决,但其他事情变得更糟了。尽量享受接下来的几年,因为情况会变得很奇怪。 - Jack

28

您正在重复加载Facebook脚本all.js。应该只加载一次。


你怎么知道是两倍?哪个是第一次和第二次?-谢谢! - Genadinik
1
当我查看源代码时,我看到了一个引用 http://connect.facebook.net/en_US/all.js#xfbml=1,大约20行后我又看到了一个引用 http://connect.facebook.net/en_US/all.js。 - John Pick
现在当我查看源代码时,只能看到第一个引用(带有#xfbml=1的那个)。 - John Pick
对我来说完美地工作了,我确实调用了两次。 - jsims281
2
真正的问题是您输入了错误的Facebook APP ID。 - Faris Rayhan
@FarisRayhan OP 调用了脚本两次,所以我的答案适用于他的情况。其他人的答案适用于你的情况。 - John Pick

1

由于网络上没有人能够回答我的问题,我彻底删除了旧的Facebook应用程序(在我的developers.facebook.com帐户上),并从头开始创建了一个全新的应用程序。

之后,基本代码完成了工作。


1
在我的情况下,我遇到了同样的问题,是由于缺少应用程序ID造成的。如果你在Facebook上尝试发布内容时没有应用程序ID,你将会遇到相同的问题。

目前你的回答不够清晰,请[编辑]以添加更多细节,帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community
这并没有真正回答问题。如果您有其他问题,可以点击 [提问] (https://stackoverflow.com/questions/ask) 来提出。如果您想在此问题获得新的答案时收到通知,您可以 [关注此问题] (https://meta.stackexchange.com/q/345661)。一旦您拥有足够的 [声望] (https://stackoverflow.com/help/whats-reputation),您也可以 [添加悬赏] (https://stackoverflow.com/help/privileges/set-bounties) 以吸引更多关注此问题的人。- 来自审核 - Dmitry Khamitov

-7

这对我有用

<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
  FB.init({
    appId  : true,
    status : false, // check login status
    cookie : false, // enable cookies to allow the server to access the session
    xfbml  : true  // parse XFBML
  });
</script>

1
appId 应该是 Facebook 应用程序的 ID。这不应该起作用。 - James P.

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