Facebook window.fbAsyncInit未在Chrome扩展程序中触发

时间:2013-05-09 01:52:07

标签: google-chrome-extension facebook-javascript-sdk

我想将Chrome扩展程序与Facebook集成,但我无法执行fbAsyncInit。

这是我在扩展程序的html(editPage.html)上的内容:

<body>
  <div id="fb-root"> </div> 
  <script type="text/javascript" src="js/initializeFacebook.js"></script>
  ....
 </body>

我打电话给这个html:

chrome.tabs.create({
  url : chrome.extension.getURL('editPage.html'),
    selected : true
}, function(tab) {
});

这是initializeFacebook.js中的内容(摘自本文档:https://developers.facebook.com/docs/reference/javascript/

 ( 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 = "https://connect.facebook.net/en_US/all.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

window.fbAsyncInit = function() {
console.log('lala');
// init the FB JS SDK
FB.init({
    appId : 'XXXX', 
    status : true, 
    xfbml : true 
});

FB.ui({
    method : 'feed',
    name : 'The Facebook SDK for Javascript',
    caption : 'Bringing Facebook to the desktop and mobile web',
    description : ('Description'),
    link : 'https://developers.facebook.com/docs/reference/javascript/',
    picture : 'http://www.fbrell.com/public/f8.jpg'
}, function(response) {
    if (response && response.post_id) {
        alert('Post was published.');
    } else {
        alert('Post was not published.');
    }
});
};

这就是我在与Facebook有关的manifest.json上的内容:

 "content_security_policy": "script-src 'self' https://connect.facebook.net; object-src 'self'",

正在发生的是editPage.html页面被打开,在标题上我实际上有这个:

<script id="facebook-jssdk" src="https://connect.facebook.net/en_US/all.js"></script>

所以SDK就在那里......我想......但是console.log('lala')从未显示过,我无法触发fbAsyncInit。控制台上也没有显示任何错误。

我已停用所有其他Chrome扩展程序以确保Facebook未被删除。

那就是它,有什么想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

有完全相同的问题。在此处找到了解决方案:http://brianmayer.com/2012/12/building-a-chrome-extension-that-connects-to-a-facebook-app/