Ionic Inapp浏览器Office 365登录重定向,重定向时不触发loadstop事件

时间:2019-06-23 07:51:15

标签: cordova ionic-framework office365 inappbrowser

我正在实施Keycloack登录(Outlook-365身份验证)以获取用户个人资料信息

网络应用

如果我打开url(https://myurl.com/login_new.php)可以正常工作,请打开Microsoft https://login.microsoft(登录窗口),然后输入 返回用户个人资料信息。

移动应用

我需要使用inappbrowser在移动应用程序中执行相同操作。我写了以下脚本。 它打开https://myurl.com/login_new.php并重定向到https://login.microsoft(登录窗口)

在登录窗口中输入用户名和密码后,它被禁用的登录按钮卡住了,没有任何反应。 但是在应用暂停并恢复活动后,它将打开另一个窗口并提供用户信息 (为什么它仅在device(app)暂停并恢复后才​​起作用)?我做错了什么?

这是我的脚本:

在输入用户名和密码后重定向到https://login.microsoft网址后在脚本中 已触发浏览器loadstart 事件,但未触发 loadstop 事件。

请指导如何解决此问题。

    import { InAppBrowser,InAppBrowserOptions } from '@ionic-native/in-app-browser';

    constructor(private iab: InAppBrowser){} 

    keyclockSocialLogin(){
        const options: InAppBrowserOptions = {
            zoom: 'no',
            location:'yes',
            hardwareback: 'no',
            clearcache: 'yes',
            clearsessioncache: 'yes'
        }

        var browser =  this.iab.create('https://myurl.com/login_new.php', '_blank', options);
        browser.on("loadstart").subscribe((event) => {
            console.log(event);
        });

        browser.on("loaderror").subscribe((event) => {
            alert('load error');
        });

        browser.on('loadstop').subscribe(event => {
            browser.show();
            browser.executeScript({ code: "localStorage.setItem( 'username', '' );" });
            var loop = setInterval(function() {
                browser.executeScript({
                    code: "localStorage.getItem('username');"
                }).then(values => {
                    var name = values[ 0 ];
                    if ( name ) {
                        clearInterval( loop );
                        browser.close();
                    }
                });
            });
        });

        browser.on('exit').subscribe(event => {
            console.log('exit called');
        });

    }

0 个答案:

没有答案