我有一个使用MS的Facebook库的c#客户端应用程序已经运行了一段时间(这个特殊的表单最后一次更改于5月6日,并且在我上周的上一个测试周期中工作)。这是一个自助服务终端应用程序(幸运的是仍处于开发阶段),它具有嵌入式Web浏览器,因此用户可以对我们的应用进行身份验证和授权。今天,当您点击授权页面上的任一按钮时,我开始收到脚本错误弹出窗口。
所以我进入登录页面,用户进行身份验证,一切都很好,然后进入授权页面“想代表您私下发帖”,仍然很好,但是,当你点击好或跳过时,up come弹出窗口说
An error has occurred in the script on this page
Line: 5
Character: 878
Error: "Access is denied."
URL: https://static.xx.fbcdn.net/rsrc.php/v2/yG/r/q0zNT1kK_7g.js.
现在弹出窗口正常“你想继续在这个页面上运行脚本吗”是/否选项,但同样,它被卡住了。单击是或否,没关系,弹出窗口不断弹出,我必须手动终止该过程。
我没有更改我的代码,但可能在查看“重大更改”列表并启用它时更改了一些应用程序设置,但如果是这样,我不知道我能做些什么来打破这个。我已经回过头来玩了一些设置,没有明显的效果。
这个问题的另一面也令人沮丧的是,因为我从未真正完成oauth过程,所以我永远不会得到我的访问令牌。然而,某些东西被煮熟了,它认为用户仍然登录。由于我没有访问令牌,我无法将它们注销,所以现在每次我进入登录页面时,它都会直接通过它授权页面。显然,如果我可以通过脚本错误,我可以获取我的令牌并将用户注销。
任何建议都会有所帮助。
编辑: 我把这个网址带到了Chrome上,它工作得很好,所以我抓住了有问题的.js找到了有问题的代码。问题是“window.resizeBy(w,x)”,并且一些快速搜索看起来像IE可能会故意阻止这种情况(至少旧版本,当我在IE 10真正的浏览器中尝试它时也是如此)。有趣的是,在Chrome(但不是IE)中,当它第一次点击其中一个授权屏幕时,我收到以下消息:
您在大型浏览器窗口中使用显示类型的“弹出窗口”或 标签。要获得更好的用户体验,请使用我们的显示此对话框 JavaScript SDK未指定显式显示类型。 SDK 将为每个环境选择最佳显示类型。或者, 在window.open()上设置高度和宽度调用以正确调整大小 如果您有特殊要求阻止您使用该对话框 SDK。此消息仅对您的应用程序的开发人员可见。
这让我想知道:如果我能弄清楚如何在嵌入式浏览器中获取window.open,并且如果我可以按照建议明确设置大小,那么它是否会跳过此调整大小导致问题。接受更多研究。
答案 0 :(得分:1)
好的,所以在Chrome中花费的时间(照例)比任何其他浏览器都更有价值。由于这是使用MS的Facebook客户端,而不是JS SDK,因此没有简单的方法可以访问window.open。 Chrome中的消息给出的另一个关键是我们正在使用“popup”类型。将其更改为键入“page”,不再出现脚本错误。授权显示在他们自己的JS弹出窗口中,这应该没问题。