3

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

阻止来源为“ 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 或其实现。

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

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

4

1 回答 1

5

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

于 2013-08-07T07:16:30.027 回答