在Chrome扩展弹出窗口中运行外部js(Facebook-SDK)需要哪些权限?

时间:2016-09-11 11:35:33

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

我正在开发我的第一个Chrome扩展程序,我想在我的popup.js中运行此脚本:

(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/de_DE/sdk.js#xfbml=1&version=v2.7&appId=############";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

但它没有加载,我在控制台中看不到任何错误。

1 个答案:

答案 0 :(得分:1)

  • 错误显示在弹出窗口的控制台中:右键单击弹出窗口,然后Inspect
  • 脚本src未指定https,因此使用了当前的方案chrome-extension:

    (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/de_DE/sdk.js#xfbml=1&version=v2.7&appId=############";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
    
  • 要允许在manifest.json中指定脚本contentSecurityPolicy

    "content_security_policy": "script-src 'self' https://connect.facebook.net/ https://graph.facebook.com/; object-src 'self'"
    
  • 要允许manifest.json中SDK权限加载的依赖脚本:

      "permissions": [
        "webNavigation",
        "https://connect.facebook.net/de_DE/sdk.js*",
        "https://graph.facebook.com/v2.1/*"
      ]
    
  • 由于在manifest.json中无法识别URL的哈希部分,因此应使用通配符*