javascript 如何将Facebook的所有JS功能完全加载到Connect网站上

bwntbbo3  于 2023-05-21  发布在  Java
关注(0)|答案(3)|浏览(93)

好吧,在这里,我试图整合一个网站与Facebook连接,我被困在一些奇怪的地狱之环。
我已经看到了2种方法在fbc网站上初始化的js,我已经尝试了两次,但他们只做相反的一半,整个工作,我需要做的。

<script src="http://connect.facebook.net/en_US/all.js"></script>
...
$(document).ready(function(){
   FB.init({'appId':'000',
       'cookie':true,
       'status':true,
   });
});

这就是官方文档所说的,但是这并没有加载所有的功能。连接是未定义的,确保Init不做任何事情,我完蛋了。我看到的另一个代码是:

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
...
$(document).ready(function(){
   FB.init("000", "/xd_receiver.htm");
});

乍一看,这似乎很棒,因为它加载了FB.Connect特性,但似乎这是它加载的唯一一组特性,因为FB.ui未定义,FB.getLoginStatus未定义,所有其他“核心函数”未定义。
尝试同时包含两个不同的js文件会导致奇怪的错误和半初始化的会话。我不确定这两种不同类型的FB.init调用有什么区别。
谢谢大家!

qnyhuwrf

qnyhuwrf1#

你的第一个例子描述了最近(几个月前)引入的新API中的“新方式”,而你的第二个例子是旧API曾经是什么(现在不推荐使用)。
现在加载FB js的最佳方法是:

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({appId: 'your app id', status: true, cookie: true,
             xfbml: true});
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>

这不会阻止页面加载,直到加载js。
不幸的是,没有办法从两个世界中获得最好的,如果可能的话,你应该开始为新项目使用新的API,因为对旧API的支持迟早会被放弃。
您可以找到新的API文档here。旧API的90%的功能都被继承下来了(通常是以不同的名称),但一些旧的好东西,如FB.ensureInit()实际上已经消失了。此外,一些旧的API功能现在需要使用FQL

whlutmcx

whlutmcx2#

第一个例子是使用新的JS SDK,这是您最想使用的。FeatureLoader URL将为您提供旧版SDK。它们不能在您发现的同时加载,因此只需使用最新和最好的新版本。

wz3gfoph

wz3gfoph3#

原来我是majorly混淆,这两个文件和函数调用适用于2个不同版本的js库...因此,当我使用新版本时,我不应该期望FB.Connect被定义,当我使用旧版本时,我不应该期望FB.ui被定义...
我本来可以节省一天的时间,如果文档更清楚,有很多更少的链接腐烂。
干杯!

相关问题