从Ionic 2中的Cordova InAppBrowser获取cookie

时间:2016-06-08 20:59:29

标签: javascript cordova ionic-framework single-sign-on cordova-plugins

我正在使用Ionic 2构建移动版Web应用程序,该应用程序使用SAML进行客户端服务器上运行的SSO。现在我们有一个api,当你没有登录到重定向到他们的服务器进行SSO的网站时被调用,然后在你登录时返回我们的服务器。然后,浏览器有cookie来存储用户登录的

我需要拿那个cookie然后把它拿到我的Ionic应用程序中。我知道您无法将InAppBrowser中的cookie共享回应用程序,但必须有一些方法可以将其恢复。足够的应用程序使用Twitter,Facebook等,我认为有一些我想念的简单。

1 个答案:

答案 0 :(得分:2)

是的,由于域策略,这是非常困难的,而inAppBrowser是一个新的实例,不允许以前的Web视图访问它。

然而,有一种方法可以使用InAppBrowser的executeScript()方法,让您在打开的窗口中执行JavaScript。

var win = window.open( "http://icenium.com", "_blank", "EnableViewPortScale=yes" );
win.addEventListener( "loadstop", function() {
    win.executeScript({ code: "alert( 'hello' );" });
});
  

您甚至可以提供回调来检索已打开的值   窗口

var win = window.open( "http://icenium.com", "_blank", "EnableViewPortScale=yes" );
win.addEventListener( "loadstop", function() {
    win.executeScript(
        { code: "document.body.innerHTML" },
        function( values ) {
            alert( values[ 0 ] );
        }
    );
});

然后您可以使用返回的值将其保存在local storage

This site provides some great code to help you out.