Angular oidc客户端ionic 4:InAppBrowser在系统浏览器中而不是在应用程序内部显示应用程序
我一直在努力将一个相当大的应用程序从ionic 3+cordova迁移到ionic 4+电容器 我们使用的是IdentityServer4,所以我使用npm包oidc客户端来显示登录弹出窗口。然而,当应用程序由ionic 3供电时,登录页面不再显示在应用程序内部,而是显示在系统浏览器中 在阅读了整个源代码之后,我意识到默认情况下,该软件包使用的是应用程序内浏览器,而不是系统浏览器。奇怪的是,我从未告诉InAppBrowser保持系统模式,也从未配置包的设置以使用系统的浏览器 这是认证码。我不是作者,但我确实在爱奥尼亚3上测试了这段代码,它工作得非常好Angular oidc客户端ionic 4:InAppBrowser在系统浏览器中而不是在应用程序内部显示应用程序,angular,cordova,ionic-framework,inappbrowser,capacitor,Angular,Cordova,Ionic Framework,Inappbrowser,Capacitor,我一直在努力将一个相当大的应用程序从ionic 3+cordova迁移到ionic 4+电容器 我们使用的是IdentityServer4,所以我使用npm包oidc客户端来显示登录弹出窗口。然而,当应用程序由ionic 3供电时,登录页面不再显示在应用程序内部,而是显示在系统浏览器中 在阅读了整个源代码之后,我意识到默认情况下,该软件包使用的是应用程序内浏览器,而不是系统浏览器。奇怪的是,我从未告诉InAppBrowser保持系统模式,也从未配置包的设置以使用系统的浏览器 这是认证码。我不是作
public startAuthentication() {
if (this.app.isApp()) {
this.manager.signinPopup().then((user) => {
this.setUserInfo(user);
}).catch((e) => {
console.log(e);
});
} else {
return this.manager.signinRedirect();
}
}
这是我的AppModule文件
@NgModule({
declarations: [
AppComponent,
VideoChatComponent,
],
imports: [
CommonModule,
WorkOrderPageModule,
DemoPageModule,
BrowserModule,
AccuvPageModule,
AboutPageModule,
HomePageModule,
FormsModule,
IonicModule.forRoot(),
CoreModule,
// ReceiveMaterialsPageModule,
AppRoutingModule,
IonicStorageModule.forRoot(),
// IonicAudioModule.forRoot((audioProviderFactory)),
// PowerBIModule.forRoot(),
// // AudioNoteModule,
// SpeechToTextModule,
// LazyLoadImageModule,
// DailyFieldReportPageModule,
// DailyVehicleInspectionPageModule,
// WorkOrderCONModule,
// WorkOrderOFModule,
// DashboardPageModule,
// PoWorkflowApprovalsPageModule,
// VideoQaModule,
// WarehouseCheckInPageModule,
// ChatEnginePageModule
],
bootstrap: [AppComponent],
entryComponents: [
// AppComponent,
// MainComponent,
// HomePage,
// AboutPage,
// AccuvPage,
// WorkOrderPage,
// ReceiveMaterialsPage,
// DemoPage
],
schemas: [
CUSTOM_ELEMENTS_SCHEMA
],
providers: [
{provide: APP_BASE_HREF, useValue: '/'},
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
// IonicAudioModule,
HttpClient,
Diagnostic,
LocationAccuracy,
ScreenOrientation,
IonicStorageModule,
AppCenterAnalytics,
AndroidPermissions,
VideoCapturePlus,
LocalNotifications,
InAppBrowser,
// IonicModule
]
})
export class AppModule { }
请注意,由于我正在逐步将许多模块和服务集成到新的应用程序中,因此对它们进行了注释
我尝试将startAuthentication方法替换为一个简单的InAppBrowser create()方法,并使用“\u blank”目标,结果一切正常
我想知道是否有人能理解为什么,考虑到插件可以工作,而且iApp浏览器似乎正确注入,我会在系统的浏览器中看到弹出窗口
以下是UserManagerSettings对象:
private _getClientSettings(): UserManagerSettings {
return {
authority: this.app.config.identityServerURL,
checkSessionInterval: 10000000,
client_id: this.app.config.clientId,
filterProtocolClaims: this.app.config.filterProtocolClaims,
iframeNavigator: new CordovaIFrameNavigator(),
loadUserInfo: this.app.config.loadUserInfo,
monitorSession: false,
popupNavigator: new CordovaPopupNavigator(),
post_logout_redirect_uri: this.app.config.postLogoutRedirectURI,
redirect_uri: this.app.config.redirectURI,
response_type: this.app.config.responseType,
scope: this.app.config.scope
};
}
}
我还试图显式地将popupWindowTarget设置为“_blank”,但没有成功
感谢您阅读我的问题:)原来插件不兼容!我现在使用angular auth oidc客户端,它可以正常工作。然而,我在重定向URI(localhost:3000,甚至是自定义url方案)方面遇到了麻烦 我将为这个主题打开另一个问题,因为电容器的服务器似乎正在运行capacitor://localhost. 更新:插件不是不兼容的。平台插件检查(platform.is(xxx)返回false。也就是说,执行了登录重定向而不是登录弹出窗口 然后我确保检查platform.is('cordova')而不是在我的ipad上不工作的cordova.is('ios') 对不起,格式不好。我正在打电话 确保已触发登录弹出功能 伪: if(平台is(科尔多瓦)) oidc.SigningPup() 其他的 oidc.signinRedirect() 和平
使用platform.is(capactor)如果使用capactor后发现插件不兼容!我现在使用的是angular auth oidc客户端,它可以正常工作。但是,我遇到了重定向URI的麻烦(localhost:3000,甚至是自定义url方案) 我将为这个主题打开另一个问题,因为电容器的服务器似乎正在运行capacitor://localhost. 更新:插件不兼容。平台插件检查(platform.is(xxx)返回false。也就是说,执行了登录重定向,而不是登录弹出窗口 然后我确保检查platform.is('cordova')而不是在我的ipad上不工作的cordova.is('ios') 对不起,格式不好。我正在打电话 确保已触发登录弹出功能 伪: if(平台is(科尔多瓦)) oidc.SigningPup() 其他的 oidc.signinRedirect() 和平
使用平台。is(电容器)如果使用电容器有任何更新吗?我也在使用angular auth oidc客户端,但在重定向到自定义方案后,我的应用程序在系统浏览器中打开。实际上插件并不不兼容。结果表明,平台检测将我的应用程序检测为web浏览器,因此执行登录重定向,而不是登录弹出窗口(platform.IS(xxx))返回false。你能确保登录弹出调用被触发吗?如果是移动客户端,重定向URL是什么?有任何更新吗?我也使用angular auth oidc客户端,但在重定向到自定义方案后,我的应用程序在系统浏览器中打开。实际上插件不兼容。结果表明,平台检测被检测到将我的应用程序连接为web浏览器,以执行登录重定向,而不是登录弹出窗口(platform.is(xxx))返回false。能否确保触发登录弹出调用?如果是移动客户端,重定向URL是什么?