Google chrome extension 可以在扩展中构建facebook登录功能吗

Google chrome extension 可以在扩展中构建facebook登录功能吗,google-chrome-extension,Google Chrome Extension,我想在我的chrome扩展中包括facebook登录功能。我包括 popup.html中的connect.facebook.net/en_US/all.js文件。但不起作用 我正在使用代码 window.fbAsyncInit = function() { // init the FB JS SDK FB.init({ appId: 'APP_ID', // App ID from the App Dashboard

我想在我的chrome扩展中包括facebook登录功能。我包括

popup.html中的connect.facebook.net/en_US/all.js文件。但不起作用

我正在使用代码

window.fbAsyncInit = function() {
        // init the FB JS SDK
        FB.init({
            appId: 'APP_ID', // App ID from the App Dashboard
            //channelUrl : '//www.example.com/', // Channel File for x-domain communication
            status: true, // check the login status upon init?
            cookie: true, // set sessions cookies to allow your server to access the session?
            xfbml: true  // parse XFBML tags on this page?
        });

        // Additional initialization code such as adding Event Listeners goes here
        console.log(FB);

    };

    // Load the SDK's source Asynchronously
    (function(d, debug) {
        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 = "http://connect.facebook.net/en_US/all" + (debug ? "/debug" : "") + ".js";
        ref.parentNode.insertBefore(js, ref);
    }(document, /*debug*/false));
但是得到了错误


拒绝加载脚本“”,因为它违反了以下内容安全策略指令:“script src‘self’chrome extension resource:”。

正如错误消息所述,Facebook脚本不是。我没有看过该脚本,但是如果您无法修改它并修复CSP问题,您通常有两个选项来处理此类脚本:

  • 把它放在一个盒子里
  • 把脚本放在一个文件夹中
    不幸的是,Facebook脚本的要点可能是在FB身份验证后设置cookie,并且cookie将保留在iframe或webview中,因此这两种方法都不会在主应用程序中使用所需的cookie。你必须想办法将FB登录操作的产品(cookie)传输到你的应用程序,可能是通过postMessage。如果您完成了此项工作并成功,请将结果发布到某个地方,例如GitHub上的示例应用程序中。

    我使用以下代码,它可以正常工作,而不会损坏CSP

        function loginfacebook()
        {       
            chrome.windows.create(
            {
                'url': "https://www.facebook.com/dialog/oauth?client_id=yourclientid&redirect_uri=https://www.facebook.com/connect/login_success.html&scope=email&response_type=token"
            }, null);
    
            chrome.tabs.query({active:true}, function(tabs){
                tabid = tabs[0].id;
                chrome.tabs.onUpdated.addListener(function(tabid, tab)
                {
                    var cadena = tab.url;
                    if (cadena != null)
                    {
                        var resultado = cadena.match(/[\\?&#]access_token=([^&#])*/i);
                    }
                    if (resultado != null)
                    {                                           
    
                        token = resultado[0];
                        token = token.substring(14);
                        storagetoken(token);
                    };
                });
    

    “但不工作”是什么意思?Chrome开发者工具告诉你什么?好的,现在我已经编辑了我的问题,并提供了完整的细节。请参考一下,我已经用过了,工作正常。从这段代码中,我获得了访问令牌,并使用它对其进行了解析,在后端获得电子邮件并成功登录。但我希望我的弹出窗口保持打开状态,因为当我完成登录时,我可以通过ajax更改弹出窗口html。