oid c -client ioni c 4: InAppBrowser показывает приложение в системном браузере, а не внутри приложения - PullRequest
0 голосов
/ 21 апреля 2020

Я работал над переносом довольно большого приложения с ioni c 3 + cordova на ioni c 4 + конденсатор.

Мы используем IdentityServer4, поэтому я использую пакетный oid npm c -клиент для отображения всплывающего окна входа в систему. Однако вместо того, чтобы отображаться внутри приложения, как это было тогда, когда приложение было включено с помощью ioni c 3, теперь в браузере системы отображается страница входа в систему.

После прочтения всего исходного кода я понял, что пакет по умолчанию использует браузер приложения, а не системный браузер. Странно то, что я никогда не говорил InAppBrowser оставаться в системном режиме или никогда не настраивал параметры пакета для использования системного браузера ...

Вот код аутентификации. Я не автор, но я тестировал этот код на ioni c 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 на простой метод create () InAppBrowser на '_blank' цель, и она работала, как и ожидалось.

Мне было интересно, если кто-нибудь мог понять, почему, учитывая, что плагин работает и InAppBrowser кажется правильно введен, я бы увидел всплывающее окно в браузере системы.

Вот объект 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», но он не работал.

Спасибо, что прочитали мой вопрос:)

1 Ответ

0 голосов
/ 23 апреля 2020

Оказывается, плагин был несовместим! Я сейчас использую angular -auth-oid c -клиент, и это работает. Тем не менее, у меня возникли проблемы с перенаправлением Uris (localhost: 3000 или даже пользовательская схема URL).

Я открою еще один вопрос по этому вопросу, поскольку сервер конденсатора работает на конденсаторе: //localhost.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...