无法授权应用:FB.login()上仅IE错误

时间:2011-10-26 23:37:39

标签: javascript facebook

在IE(任何版本)中调用FB.login()时,弹出式身份验证对话框只会说:

  

< appname>发生错误。请稍后再试。

此呼叫在Chrome,Firefox和Opera中按预期工作。减少测试:

FB.init({
    appId      : '...',
    channelURL : '...',
    status     : true,
    cookie     : true,
    oauth      : true,
    xfbml      : false
});

FB.login(...);

Demo here。 Facebook帐户是否已登录并不重要;但是,如果登录的Facebook帐户已经授权应用程序(因此不需要显示对话框),那么FB.login()在IE中成功,我可以调用API函数。< / p>


修改:尝试在IE中授权应用的管理员帐户会产生更多错误细节:

  

API错误代码:191

     

API错误说明:指定的URL不属于应用程序

     

错误消息:redirect_uri无效:应用程序配置不允许给定URL。

Chrome和IE都会在 s-static.ak.fbcdn.net 上发送redirect_uri

IE:https://s-static.ak.fbcdn.net/connect/xd_proxy.php?version=3#cb=f1cd66d36136ac9&origin=https%3A%2F%2Fjosh3736.net%2Ffbec46a30660a9&relation=opener&transport=flash&frame=f1d03767721d88c

Chrome:https://s-static.ak.fbcdn.net/connect/xd_proxy.php?version=3#cb=f3cc233c94&origin=https%3A%2F%2Fjosh3736.net%3A8%2Ff29e5a7f9&relation=opener&transport=postmessage&frame=f1f640e58

看起来JavaScript SDK正在删除origin的端口。 (Chrome在%3A8%2F末尾有origin [:8 /],IE只有%2F Reported as a bug.

2 个答案:

答案 0 :(得分:0)

其中一个错误提交评论建议删除传递给channelUrl的对象中的FB.init()属性。

只是一个理论,但如果您在channelURL中包含端口号,而不是删除它,您也可能会取得成功。

答案 1 :(得分:0)

Facebook在SDK中有confirmed that this is a bug,并在2012年7月解决了问题。