【发布时间】:2014-03-03 02:35:11
【问题描述】:
我正在使用 Phonegap(本地文件系统上的 js、css 和 html)编写一个应用程序,我想从中获取一个 oauth 令牌。 所以我打开一个弹出窗口来显示我们的身份验证服务器页面。在登录过程之后,它被重定向到我提到的在其 URL 中提供代码的页面。
看来重定向页面不能是本地文件(“不允许加载本地资源:file://...”)。 如果我重定向到使用 http 访问的页面,我会遇到“同源策略”问题(SecurityError: Blocked a frame with origin "http://..." from access a cross-origin frame),我不能使用 window.opener 从弹出窗口访问主页(在本地文件系统上)。
如何将弹出窗口中的代码传送到本地文件(存储、webSocket 等)?
【问题讨论】:
-
我也遇到过同样的问题,但在不同的环境中。我的解决方法是尝试使用
window.opener.postMessage与主浏览器窗口通信,说明身份验证已完成。这在普通浏览器中工作得很好,但是 Cordova 的 inAppBrowser 没有暴露 window.opener 对象所以没有骰子。 -
这个变通办法似乎解决了这个问题:blogs.telerik.com/appbuilder/posts/13-12-23/…
-
最终,我发现使用自定义
loadstart事件是一个更简单的解决方案:stackoverflow.com/a/18633515/2155068。
标签: javascript cordova oauth-2.0 local same-origin-policy