【发布时间】:2019-07-30 22:45:07
【问题描述】:
我开发了一个网络应用程序。我正在使用 Cordova 为 Android/iOS/OSX/Windows 创建应用程序包装器,当我测试 Windows 应用程序时,我遇到了一个问题。
该应用程序与我的应用程序域之外的许多链接进行交互,包括访问第三方用户内容和使用 OAuth 通过第三方服务为用户进行登录。 OAuth 重定向是从我的应用程序的后端服务器生成的,然后用户通过 javascript 手动重定向到它们。
let response = await this.$apollo.mutate({
mutation: initializeConnection,
variables: variables
});
window.location = response.data.initializeConnection.redirectUrl;
在 Android/iOS/OSX 中,这会在系统浏览器中打开 OAuth 重定向,这正是我想要的。但是,Windows 应用程序没有。我在 Cordova config.xml 文件中将我的应用程序的 URL 设置为 <allow-navigation>,当它为 Windows 构建时,它会将它们插入到 appmanifest 中(它们显示为内容 URI)。当上述重定向在 Windows 中发生时,会出现“应用程序无法使用脚本加载 <url> url,因为该 url 启动另一个应用程序”的错误。
我不想打开另一个应用程序,我只想在系统浏览器中打开它们。作为比较点,我显示为<a href="<whatever>" target="_blank"> 的用户内容将在系统浏览器中正常打开。我尝试使用window.open()打开重定向而不是window.location,虽然如果我将“https://*”添加到内容URI,这将在另一个应用程序窗口中打开重定向,而不是系统浏览器.
我需要做什么才能在系统浏览器中打开这些重定向?
【问题讨论】:
标签: javascript cordova uwp