我正在尝试使用IOS Ionic v1应用程序的第三方企业OAuth2提供程序进行登录。
自升级到WKWebview以来,基于inapp浏览器的登录名不再起作用
当前使用IOS的ASWebAuthSession和可用于它的cordova插件cordova-plugin-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);
});
首次启动应用程序>登录>新窗口打开并加载第3方登录屏幕>在用户名和密码上输入>成功>关闭窗口>我在成功回调中获得了access_token。第一次都很好
但是第二次与第一次相同。使用ASWebAuthSession API,是否不应该记住cookie并传递给OAuth提供程序并返回到应用程序? ASWebAuthSession不能与SSO一起使用吗?
我也尝试了现在不推荐使用的SFAuthenticationSession,但是没有运气。
进一步证明ASWebAuthSession在IOS中共享了来自Safari的数据,我尝试这样做:
在Safari浏览器中登录到Facebook,然后在我的应用程序中启动了一个ASWebAuthSession实例,如下所示,它直接加载了我的Facebook Feed,而无需重新登录。
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