0

对于我的 Facebook 应用程序,Facebook.login 对话框在登录 facebook 并授予权限后不会关闭。我尝试了一个带有间隔和 FB.getLoginStatus 的解决方法,但即使我已授予权限并且该应用程序出现在我的帐户设置中,此响应也只会返回“not_authorized”。

我的页面上有以下标签:

<meta http-equiv="X-UA-Compatible" content="IE=9">
<script src="//connect.facebook.net/en_US/all.js"></script>

元标记似乎不是类似问题中描述的问题

FB.init({
        appId: 'xxxxxxxxxxxxx', 
        status: false,
        channelUrl: 'My_Channel_File.html'
    });

频道文件包含与上面相同的脚本标签。我改变了很多其他参数:oauth、xfbml、cookie、状态和摩擦请求(我在其他地方看到过)

这个问题只出现在Win8和IE10上

提前致谢!

4

1 回答 1

0

我解决了这个问题。您需要异步初始化 FB-jssdk:

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

(function (d) {
    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 = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
}(document)); 

无论出于何种原因,当您这样做时,FB.login 的对话框都会按预期关闭,一切正常=)

编辑: 问题是必须在 IE 中更改的安全属性:
Internet-properties -> 安全 -> 必须启用底部“安全模式”上的复选框,然后它也可以使用同步作为异步 FB.init
(我是德国人,所以我不知道英文属性名称)

于 2013-02-20T15:05:49.763 回答