为了加载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
,
所以在FB.init
标记加载了Facebook SDK之前,不应该调用<script>
。
答案 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: ");
};
};