Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular oidc客户端ionic 4:InAppBrowser在系统浏览器中而不是在应用程序内部显示应用程序_Angular_Cordova_Ionic Framework_Inappbrowser_Capacitor - Fatal编程技术网

Angular oidc客户端ionic 4:InAppBrowser在系统浏览器中而不是在应用程序内部显示应用程序

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保持系统模式,也从未配置包的设置以使用系统的浏览器 这是认证码。我不是作

我一直在努力将一个相当大的应用程序从ionic 3+cordova迁移到ionic 4+电容器

我们使用的是IdentityServer4,所以我使用npm包oidc客户端来显示登录弹出窗口。然而,当应用程序由ionic 3供电时,登录页面不再显示在应用程序内部,而是显示在系统浏览器中

在阅读了整个源代码之后,我意识到默认情况下,该软件包使用的是应用程序内浏览器,而不是系统浏览器。奇怪的是,我从未告诉InAppBrowser保持系统模式,也从未配置包的设置以使用系统的浏览器

这是认证码。我不是作者,但我确实在爱奥尼亚3上测试了这段代码,它工作得非常好

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是什么?