使用Facebook Javascript SDK编译应用程序

时间:2012-09-28 14:28:41

标签: facebook sencha-touch facebook-javascript-sdk sencha-touch-2

我在尝试编译使用 Facebook Javascript SDK 的应用程序时偶然发现了一个问题:

[ERROR] ReferenceError: Can't find variable: FB

这是我的设置:

的index.html

...


<script id="microloader" type="text/javascript" src="sdk/microloader/development.js"></script>

  <!-- dependencies -->
  <script>
    window.fbAsyncInit = function() {
      FB.init({
        appId      : 'XXXXXXXXXXXXX', // App ID
        channelUrl : '//payme.com:3000/channel.html', // Channel File
        status     : true, // check login status
        cookie     : true, // enable cookies to allow the server to access the session
        xfbml      : true  // parse XFBML
      });

      // Additional initialization code here
    };

    // Load the SDK Asynchronously
    (function(d){
       var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
       if (d.getElementById(id)) {return;}
       js = d.createElement('script'); js.id = id; js.async = true;
       js.src = "//connect.facebook.net/en_US/all.js";
       ref.parentNode.insertBefore(js, ref);
     }(document));
  </script>
...

Home.js (发现错误的地方)

...
  config: {
    controls: {
      mainView: {
        initialize: 'initView'
      }
    }
  },

  initView: function() {
    var me = this;

    FB.getLoginStatus(function(response) {
      if(response.status === 'connected') {       
        ...
      } else {
        ...
      }
    });
  },
...

我尝试异步并同步加载Facebook SDK,将脚本标记放在microloader之前和之后,但没有任何效果。

有关如何解决这个问题的想法吗?

1 个答案:

答案 0 :(得分:1)

您正在异步加载Facebook JavaScript SDK,并且可能在加载SDK之前调用方法FB.getLoginStatus。加载SDK后调用方法FB.getLoginStatus(即在您拥有// Additional initialization code here的行