0

我正在使用 Cordova Plugin Advance HTTP 从我的服务器获取用户令牌,然后从该令牌创建一个 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>

ios控制台日志

[Log] Member Token: 4PHZjQUkGETmF4M9lm7TppjoMhwqHudyhjRGZmyBxY7gCTEgazGIKWekRRLo (cordova.98fc7fcb7c020c1504f6.js, line 1) [Log] Login URL: https://www.example.com/WebRes/Club/MyClub/LoginWithToken/4PHZjQUkGETmF4M9lm7TppjoMhwqHudyhjRGZmyBxY7gCTEgazGIKWekRRLo (cordova.98fc7fcb7c020c1504f6.js, line 1)

我能够成功地从我的服务器获取令牌并且能够成功地形成 URL 但这里的问题是这个带有用户令牌的形成的 URL 让我在我的 android 设备中完美登录但它没有在 iOS 中打开我的用户帐户. 我能够在 iOS 中完美地查看所有日志,并且我能够获取令牌并形成 url,但它的作用是,它将我带到注销的主页,而不是向我显示我的登录帐户。

但是,如果我单击控制台日志中的登录 URL,它确实会将我带到我在 Safari 中登录的用户帐户。

知道我在这里做错了什么吗?它确实在 Android 中完美运行,它确实让我自动登录到我的用户帐户,但这在 iOS 中不起作用,而是将我带到我网站的主页。

4

1 回答 1

1

为什么不用iframe代替iframe,用InAppBrowser原生插件不用离开app就可以打开网站呢?

在应用浏览器中 - 教程

命令安装:

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

截屏:

在此处输入图像描述

为什么选择 InAppBrowser 而不是 iFrame?

来自 Cordova 文档: InAppBrowser 窗口的行为类似于标准 Web 浏览器,无法访问 Cordova API。因此,如果您需要加载第三方(不受信任的)内容,而不是将其加载到 Cordova 主 web 视图中,建议使用 InAppBrowser。InAppBrowser 不受白名单约束,也不在系统浏览器中打开链接。

注意:插件是通过 iframe 实现的。

于 2019-10-24T01:37:00.703 回答