IOS、ASWebAuthSession、SSO、Cordova、OAuth应用程序需要输入凭据的多次登录

IOS、ASWebAuthSession、SSO、Cordova、OAuth应用程序需要输入凭据的多次登录,ios,cordova,ionic-framework,single-sign-on,Ios,Cordova,Ionic Framework,Single Sign On,我正在尝试使用第三方企业OAuth2提供商登录我的IOS Ionic v1应用程序 由于升级到WKWebview,基于inapp浏览器的登录不再工作 当前正在使用IOS的ASWebAuthSession和cordova插件cordova插件IOS的aswebauthenticationsession var loginUrl = 'https://mywebsite/_oauth/login?app_name=mytestapp&redirect_url=https://mywe

我正在尝试使用第三方企业OAuth2提供商登录我的IOS Ionic v1应用程序

由于升级到WKWebview,基于inapp浏览器的登录不再工作

当前正在使用IOS的ASWebAuthSession和cordova插件cordova插件IOS的aswebauthenticationsession

    var loginUrl = 'https://mywebsite/_oauth/login?app_name=mytestapp&redirect_url=https://mywebsite/_oauth/login/mobile-app/iosredirect.html';

    window.plugins.ASWebAuthSession.start("mytestapp://", loginUrl,
    function(msg){
      console.log("Success ", msg);
    }, function (err) {
        console.log("Error " + msg);
    });
应用程序启动>登录>新建窗口首次打开并加载第三方登录屏幕>用户名和密码输入>成功>关闭窗口>我在成功回调中获取访问令牌。第一次一切都好

但第二次和第一次经历的流程相同。使用ASWebAuthSession API,它不应该记住cookie并传递给OAuth提供者并返回到应用程序吗?ASWebAuthSession不应该工作于SSO吗

我也尝试过现在不推荐的SFAuthenticationSession,但没有成功

为了进一步证明ASWebAuthSession在IOS中共享Safari中的数据,我尝试了以下方法:

在safari浏览器中,登录到facebook,并在我的应用程序中启动ASWebAuthSession实例,如下所示,直接加载我的facebook提要,而不要求重新登录

      window.plugins.ASWebAuthSession.start("mytestapp://", 'http://www.facebook.com',
      function(msg){
        console.log("Success ", msg);
      }, function (err) {
          console.log("Error " + msg);
      });
为什么我的OAuth行为不一样。SSO在浏览器上运行良好

非常感谢您的帮助。谢谢

Details and Versions:

   @ionic/cli-utils  : 1.19.1
   ionic (Ionic CLI) : 3.19.1
   cordova (Cordova CLI) : 7.1.0 
   Cordova Platforms : ios 5.0.1

    Android SDK Tools : 26.1.1
    ios-deploy        : 1.9.2 
    ios-sim           : 8.0.1 
    Node              : v10.16.0
    npm               : 6.9.0 
    OS                : macOS
    Xcode             : Xcode 10.2.1 Build version 10E1001 

您打开的登录页面是否知道应该检查用户是否已经登录?我怀疑Facebook工作的原因是因为Facebook知道检查浏览器中是否已经有用户会话。如果您的登录页面没有这样做,那么ASWebAuthSession将不知道自动返回用户会话。是的,在浏览器中,登录页面会显示用户是否已登录,并且不会要求再次登录,同样在android应用程序中(应用程序内浏览器方法)工作正常。感谢回复您打开的登录页面是否知道应该检查用户是否已经登录?我怀疑Facebook工作的原因是因为Facebook知道检查浏览器中是否已经有用户会话。如果您的登录页面没有这样做,那么ASWebAuthSession将不知道自动返回用户会话。是的,在浏览器中,登录页面会显示用户是否已登录,并且不会要求再次登录,同样在android应用程序中(应用程序内浏览器方法)工作正常。谢谢你的回复