何时加载带有多个Like按钮和Timeline应用程序的Facebook Javascript SDK?

时间:2012-03-14 18:24:15

标签: facebook oauth facebook-like

我想知道如果我有一个Like按钮和一个在同一页面上为时间轴应用调用FB.login的按钮,我应该如何加载Javascript SDK。 Like按钮的代码使用以下内容:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=126380467442965";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

但对于应用的OAuth dialog,Facebook建议使用:

<script src="http://connect.facebook.net/en_US/all.js"></script>
<div id="fb-root"></div>
<script>
  // assume we are already logged in
  FB.init({appId: '123050457758183', xfbml: true, cookie: true, oauth: true});
  ...
</script>

我应该使用哪一个?

1 个答案:

答案 0 :(得分:0)

不同的代码是SDK的异步和同步实现。第一个是异步 - 代码将加载而不会影响页面上的其他元素。第二个(仅包括脚本标记)是同步的。 Facebook脚本将被加载,它将在加载时保持页面。

异步实现通常更好 - 它应该使页面感觉更快。但是,由于Facebook代码是在页面之后加载的,所以在我们确定它已加载之前,我们不能使用任何FB函数。因此,异步实现为我们提供了一个回调,它在SDK加载时触发。

我认为最好使用第一个代码段中的代码,但添加此代码以使用回调初始化SDK。

按钮上的FB.login应该与你的按钮一起工作。

window.fbAsyncInit = function() {
    FB.init({
        appId: ...,
        status: true,
        cookie: true,
                xfbml: true,
        oauth: true
    });

};