Facebook Javascript SDK错误“对象[对象对象]没有方法'init`

时间:2014-03-24 00:03:59

标签: javascript facebook google-apps-script facebook-javascript-sdk

为了加载SDK以与Facebook进行交互,首先需要做的事情之一就是运行:

FB.init(params)

  

此方法用于初始化和设置SDK。 。 。 。 。 。   所有其他SDK方法必须在此之后调用,因为它们   在你做之前不会存在。

Facebook JavaScript SDK: .init()

我收到错误消息:

Object [object Object] has no method "init"

我没有收到FB未定义的错误,因此我假设至少部分Facebook Javascript SDK已加载。

加载SDK时,Facebook会将内容放入<div>元素:<div id="fb-root"></div>

为了好玩,我使用.innerHTML来查看是否可以从<div>中提取任何内容。

var fbRootContent = document.getElementById('fb-root').innerHTML;
console.log("fbRoot Content: " + fbRootContent);

它确实表明某些东西被注入<div>。所以,。 。 。我假设至少有一些Facebook Javascript SDK已加载。

一个可能的问题是,我正在使用Google Apps脚本,并且许多内容在投放之前都会被清理并删除。因此,即使某些SDK正在加载,其中一些可能会被卫生过程剥夺。

我只是想确定是否可以将Facebook Javascript SDK加载到Apps脚本中。到目前为止我没有运气。这是我尝试测试是否可以加载SDK时使用的最新代码。

<div id="fb-root"></div>
<label id="lblToHid">Load Facebook Javascript SDK</label>

<br>
<br>
<button id="btnTest">test</button>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="https://connect.facebook.net/en_US/all.js"></script>

<script>
$(document).ready(function() {
$("#lblToHid").hide();
  $("#btnTest").click(function(){
  $("#lblToHid").show();
});

callFB();
fbAsyncInit();

});

function callFB(){
  console.log("callFB ran: ");
    window.fbAsyncInit = function() {
      console.log("AsyncInit ran");

  console.log("Here is the object FB: " + FB);

  var fbRootContent = document.getElementById('fb-root').innerHTML;
  console.log("fbRoot Content: " + fbRootContent);

    FB.init({
        appId      : 'myAppID Here',
        status     : true, // check login status
        cookie     : true, // enable cookies to allow the server to access the session
        oauth      : true, // enable OAuth 2.0
        xfbml      : true  // parse XFBML
      });

  console.log("callFB done running: ");

  };
};
</script>

请注意,我没有异步加载SDK。我这样做是为了测试它是否会加载。注意这一行:

<script src="https://connect.facebook.net/en_US/all.js"></script>
Facebook建议以不同的方式加载SDK。为什么?因为它可能会降低应用的初始负载。

那么,为什么我会收到错误:Object [object Object] has no method "init"

是否可以将Facebook Javascript SDK加载到Google Apps脚本中?

我正在使用jQuery:$(document).ready

jQuery $(document).ready()

所以在FB.init标记加载了Facebook SDK之前,不应该调用<script>

1 个答案:

答案 0 :(得分:1)

尝试将您的Facebook脚本导入更改为此。

<script src="//connect.facebook.net/en_US/all.js#xfbml=1&appId={your-app-id}"></script>

{your-app-id} 是您的实际应用ID。

<强>更新

你试过这个吗?

function callFB(){
console.log("callFB ran: ");
window.fbAsyncInit = function() {
  console.log("AsyncInit ran");

FB.init({
    appId      : 'myAppID Here',
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    oauth      : true, // enable OAuth 2.0
    xfbml      : true  // parse XFBML
  });

console.log("Here is the object FB: " + FB);
 var fbRootContent = document.getElementById('fb-root').innerHTML;
console.log("fbRoot Content: " + fbRootContent);
console.log("callFB done running: ");

};
};