3

我对FB.ui进行的任何调用都没有采取任何行动。在Chrome上,如果'display'属性设置为'iframe'或'dialog',则会触发以下错误:Facebook FB.ui不起作用

阻止源“https://www.facebook.com”的帧访问源为“http://my.domain.com”的帧。请求访问的帧具有“https”的协议,被访问的帧具有“http”的协议。协议必须匹配。

Firefox和IE都没有显示控制台中的任何内容,但是也没有任何反应。因此,我不太确定这是否是实际的XSS问题。为了记录,整个网站在HTTP上运行,我没有明确指定任何HTTPS查询。

的源代码如下:

window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : XXXXXXXXX, 
     status  : true, 
     cookie  : true, 
    }); 

    FB.Event.subscribe('auth.logout', function(response) { 
     window.location.reload(); 
    }); 

    window.selectedFacebookFriends = [YYYYYYYYY]; 

    window.inviteFacebookFriends = function() { 
     FB.getLoginStatus(function(response) { 
      if (response.status === 'connected') { 
       to = window.selectedFacebookFriends.join(','); 
       FB.ui({ 
        method: 'apprequests', 
        message: 'Join ZZZZZZZZZ, it\'s cool there!', 
        to: to 
       }, function(response) {}); 
      } 
     }); 
    } 
}; 

// Load the SDK asynchronously 
(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/en_US/all.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

我试着用很多其他方法FB.ui,并改变了所有的参数,直接从控制台调用它,但是这并没有帮助。

Facebook登录完美地工作,以及我尝试使用FB.api的所有图形请求。这个问题似乎在于FB.ui或其实施。

我在这个网站上发现了很多类似的问题,但我遇到的解决方案都没有解决这个问题。

非常感谢您的帮助,如果我忘记了任何相关信息,请不要犹豫。

回答

5

如果您想要一个弹出对话框,并且遇到此问题,请确保在fb.ui中明确指定display: 'popup'