我正在实施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');
});
}