IOS、ASWebAuthSession、SSO、Cordova、OAuth应用程序需要输入凭据的多次登录
我正在尝试使用第三方企业OAuth2提供商登录我的IOS Ionic v1应用程序 由于升级到WKWebview,基于inapp浏览器的登录不再工作 当前正在使用IOS的ASWebAuthSession和cordova插件cordova插件IOS的aswebauthenticationsessionIOS、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
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应用程序中(应用程序内浏览器方法)工作正常。谢谢你的回复