我正在尝试创建OAuth登录流程。在Cordova应用程序(仅在Android上测试)中,我尝试从我的服务器加载一个页面,该页面将浏览器重定向到谷歌那边的正确OAuth页面。然而,这突然停止了工作。
如果您在浏览器中尝试下面代码中的网址,您可能需要隐身或尝试其他一些措施以避免自动登录。(如果您实际登录,服务器会为indev服务创建一个帐户。)
如果我这样编写代码(我省略了从URL中捕获凭证令牌,这是最简单的可重复示例。):
function onLoad(){
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
var authWindow = cordova.InAppBrowser.open("https://dev.taskapp.io/googleURI", '_blank');
authWindow.addEventListener("loadstart", function(e){
alert("Loadstart fired")
}
)
}
webview仍为空,并且会显示消息Loadstart触发一次。如果我将'_blank'
交换为'_self'
或'_system'
,则会加载页面并重定向工作,但事件永远不会触发。这只发生在给定的页面上。
我在我的智慧结束。
更新:相同的代码就像iOS上的魅力一样。在使用window.open()
的Android上也失败了。
更新2 :我现在明白了,_system
打开了操作系统的浏览器,我显然无法控制,_self
搜索了所有内容webview,让我的听众变得虚无。 _blank
从一个干净的克隆存储库中运行一次,然后在第二个构建中中断(不更改代码)。
如果我将cordova.InAppBrowser.open(...)
中的网址替换为我的服务器重定向的网址,Google的技术负载。然而,最终的登录按钮(可以触发重定向到我的服务器,可以假设。)已经死了。
重定向_blank目标会破坏事物吗?这是一个错误吗?有其他人在体验这个吗?