在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.
答案 0 :(得分:0)
其中一个错误提交评论建议删除传递给channelUrl
的对象中的FB.init()
属性。
只是一个理论,但如果您在channelURL
中包含端口号,而不是删除它,您也可能会取得成功。
答案 1 :(得分:0)
Facebook在SDK中有confirmed that this is a bug,并在2012年7月解决了问题。