Facebook登录引发“权限被拒绝”

时间:2011-09-08 04:48:04

标签: facebook

我正在将Facebook登录添加到我现有的asp.net应用程序中。我在登录界面添加了一个Facebook登录按钮。现在,我点击Facebook的登录按钮,在IE 9中,它会在第22行的all.js中抛出客户端异常:if(a.params)b.fbCallID=a.id;

即使在那个例外之后我看到Facebook登录屏幕并且可以登录,并且在主浏览器窗口中我得到了auth.login事件,所以我可以忍受。

但是,如果我已经登录到Facebook,我来到页面并单击Facebook登录按钮,我简单地看到空的弹出窗口,然后我得到相同的客户端异常,然后我没有得到任何事件主浏览器窗口,所以我不知道用户是否登录,因此我无法将它们重定向到另一个页面。

我尝试了channelUrl技巧,但没有帮助。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我发现这个黑客为我解决了这个问题;在致电FB.init()后立即添加此行:

// Hack to fix http://bugs.developers.facebook.net/show_bug.cgi?id=20168 for IE7/8/9
FB.UIServer.setLoadedNode = function (a, b) {
                                FB.UIServer._loadedNodes[a.id] = b;
                            };

答案 1 :(得分:0)

它发生的原因(从我读过的网站和文档,相信我,我读过很多)是IE拒绝跨网站的javascript,它看到all.js越过沙盒边框。可以找到一个很好的讨论here

有些人说adding the channel.html file works,但我们尝试了所有这些,并没有取得任何成功。 (请记住,http或https必须与发送请求的页面匹配。)

Microsoft makes reference to this same issue,他们的建议是将网站添加到受信任的网站(这没有帮助)。旧的建议(从去年开始)是将CP="HONK"添加为您的紧凑隐私政策,但我认为该错误已得到修复,并且与cookie有关。

我们似乎发生的事情是登录实际上继续,并且回调被正确调用,但是应该在登录调用之外完成的主线程停止执行(因为错误)。因此,登录之后的任何功能都无法在登录呼叫后执行。

如果有人有办法让IE不抛出异常或为此问题创建解决方法,我很想拥有它。我将很乐意提供所需的任何信息,但样本在这里:

enter code here
code before login here...
FB.login(function(response){ 
   callback stuff here... This part fires.
});
main thread stuff here...  This fails because of permission denied error.