我已经开发了一个网络应用程序。我正在使用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中(它们显示为Content URI)。在Windows中发生上述重定向时,将显示错误消息“该应用程序无法使用脚本来加载<url>
URL,因为该URL启动了另一个应用程序。”
我不想打开其他应用,我只想在系统浏览器中打开它们。作为比较,我表现为<a href="<whatever>" target="_blank">
的用户内容可以在系统浏览器中打开。我尝试使用window.open()
而不是window.location来打开重定向,并且如果在内容URI中添加“ https:// *”也可以,但是会在另一个应用程序窗口中打开重定向,而不是系统浏览器。
我需要怎么做才能在系统浏览器中打开这些重定向?
答案 0 :(得分:0)
可以执行此操作以使用url打开默认浏览器
Windows.System.Launcher.launchUriAsync(
new Windows.Foundation.Uri(url))
.then(function (success) {
if (success) {
console.log('opened ' + url);
} else {
console.log('failed opening ' + url);
}
});