Сторонний URL не входит в учетную запись в Ionic iOS - PullRequest
0 голосов
/ 23 октября 2019

Я использую HTTP Cordova Plugin Advance, чтобы получить токен пользователя с моего сервера, а затем создать URL-адрес из этого токена, чтобы мой текущий пользователь мог войти в профиль своей учетной записи. Мой код выглядит следующим образом:

teetime.page.ts

ionViewWillEnter(){
    this.callCloudFunction().then( data => {
    this.urlSafe= this.sanitizer.bypassSecurityTrustResourceUrl(this.url);
    this.canRender = true;
    });
}

async callCloudFunction() {
    var memberTokenUrl = 'https://www.example.com/WebResAPI/Api/User/GetNewUserTokenByMemberNumber?authToken=&userToken=' + token + '&clubFriendlyName=MyClub&memberNumber='

    var memberToken = await this.getMemberToken(memberTokenUrl);
    console.log("Member Token: " + memberToken);

    //Create Login URL
    this.url = 'https://www.example.com/WebRes/Club/MyClub/LoginWithToken/' + memberToken;
    console.log("Login URL: " + this.url);

    //Hide Loading Container
    await this.loading.dismiss();

    return this.url;
}

//Get Member Token
getMemberToken(memberTokenUrl){
    return new Promise((resolve, reject) => {
    this.http.get(memberTokenUrl, {}, {})
    .then(data => {
        var memberTok = JSON.parse(data.data).Value ;
        resolve(memberTok);
    })
    .catch(error => {
        console.log(error.error);
    });
    });
}

teetimes.page.html

<ion-content>
  <div style="overflow:auto;-webkit-overflow-scrolling:touch" *ngIf="canRender">
      <iframe [src]="urlSafe" style="width: 100%; height: 100vh;" frameborder="0"></iframe>
    </div>
</ion-content>

ИОС лог консоли

1016 * [Log] Член Токен: 4PHZjQUkGETmF4M9lm7TppjoMhwqHudyhjRGZmyBxY7gCTEgazGIKWekRRLo (cordova.98fc7fcb7c020c1504f6.js, линия 1) [Log] Войти URL: https://www.example.com/WebRes/Club/MyClub/LoginWithToken/4PHZjQUkGETmF4M9lm7TppjoMhwqHudyhjRGZmyBxY7gCTEgazGIKWekRRLo (cordova.98fc7fcb7c020c1504f6.js, строка 1)

Я могу успешно получить токен с моего сервера и успешно сформировать URL-адрес, но проблема заключается в том, что этот сформированный URL-адрес с пользовательским токеном полностью регистрирует меня в моемAndroid-устройство, но оно не открывает мою учетную запись пользователя в iOS. Я могу прекрасно видеть все журналы в iOS, и я могу получить токен и сформировать URL-адрес, но для этого нужно перенести меня на домашнюю страницу, на которой зарегистрировано, вместо того, чтобы показывать мой зарегистрированный аккаунт.

Однако, если я нажму на URL входа в систему из журнала консоли, это приведет меня к моей учетной записи пользователя в Safari.

Есть идеи, что я здесь не так делаю? Хотя он отлично работает в Android и автоматически входит в мою учетную запись, но в iOS это не работает, и вместо этого он переходит на домашнюю страницу моего сайта.

1 Ответ

1 голос
/ 24 октября 2019

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

В браузере приложений - учебное пособие

Установка команд:

> ionic cordova plugin add cordova-plugin-inappbrowser
> npm install @ionic-native/in-app-browser

Снимок экрана:

enter image description here

Почему InAppBrowser вместо iFrames?

Из документов Cordova: Окно InAppBrowser ведет себя как стандартный веб-браузер и не может получить доступ к API-интерфейсам Cordova. По этой причине рекомендуется использовать InAppBrowser, если вам нужно загрузить стороннее (ненадежное) содержимое , а не загружать его в основное веб-представление Cordova. InAppBrowser не подпадает под действие белого списка и не открывает ссылки в системном браузере.

ПРИМЕЧАНИЕ. Плагин реализован с помощью iframe.

...