Webview AeroGear SSO登录时使用Keyclope后端嵌入式Safari浏览器而不是外部Safari浏览器

Webview AeroGear SSO登录时使用Keyclope后端嵌入式Safari浏览器而不是外部Safari浏览器,webview,single-sign-on,aerogear,Webview,Single Sign On,Aerogear,我正在从事一个需要SSO登录功能的项目,我已经实现了AeroGear SSO登录,但问题是它在Safari浏览器中打开身份验证网站(退出主应用程序,然后打开浏览器),但我不想让应用程序进行身份验证,有什么办法吗?我可以在应用程序中使用嵌入式web视图,这将有助于验证应用程序中的用户 这是我正在使用的演示代码。(是示例代码的源代码) 导入UIKit 导入AeroGearHttp 进口AeroGearOAuth2 让主机=”http://localhost:8080" 扩展字符串{ ///将字符串编

我正在从事一个需要SSO登录功能的项目,我已经实现了AeroGear SSO登录,但问题是它在Safari浏览器中打开身份验证网站(退出主应用程序,然后打开浏览器),但我不想让应用程序进行身份验证,有什么办法吗?我可以在应用程序中使用嵌入式web视图,这将有助于验证应用程序中的用户

这是我正在使用的演示代码。(是示例代码的源代码)

导入UIKit
导入AeroGearHttp
进口AeroGearOAuth2
让主机=”http://localhost:8080"
扩展字符串{
///将字符串编码为Base64
func toBase64()->字符串{
返回数据(self.utf8).base64EncodedString()
}
///从Base64解码字符串。如果不成功,则返回nil。
func fromBase64()->字符串{
guard let data=data(base64Encoded:self)else{return nil}
返回字符串(数据:数据,编码:.utf8)
}
}
类ViewController:UIViewController{
var userInfo:OpenIdClaim?
var keydaperthttp=Http()
变量图像:[UIImage]=[]
var currentIndex=0
@IBVAR imageView:UIImageView!
@IBVAR名称标签:UILabel!
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行任何其他设置,通常从
笔尖。
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
@iAction func goPreviousImage(\发送方:UIButton){
如果self.currentIndex>0{
self.currentIndex-=1
}
self.imageView.image=self.images[self.currentIndex]
}
@iAction func goNextImage(u发送方:UIButton){
如果self.currentIndex
我只添加了一行就得到了解决方案

keycloakConfig.webView = .embeddedWebView // Open webview within the app
在设置KeyClope配置后添加这一行

   let keycloakConfig = KeycloakConfig(
    clientId: "sharedshoot-third-party",
    host: HOST,
    realm: "shoot-realm",
    isOpenIDConnect: true)

keycloakConfig.webView = .embeddedWebView // Open webView within the app

let oauth2Module = AccountManager.addKeycloakAccount(config: 
 keycloakConfig)
self.keycloakHttp.authzModule = oauth2Module
oauth2Module.login {(accessToken: AnyObject?, claims: 
 OpenIdClaim?, error: NSError?) in
    self.userInfo = claims
    if let userInfo = claims {
        if let name = userInfo.name {
            self.nameLabel.text = "Hello \(name)"
        }
    }
   let keycloakConfig = KeycloakConfig(
    clientId: "sharedshoot-third-party",
    host: HOST,
    realm: "shoot-realm",
    isOpenIDConnect: true)

keycloakConfig.webView = .embeddedWebView // Open webView within the app

let oauth2Module = AccountManager.addKeycloakAccount(config: 
 keycloakConfig)
self.keycloakHttp.authzModule = oauth2Module
oauth2Module.login {(accessToken: AnyObject?, claims: 
 OpenIdClaim?, error: NSError?) in
    self.userInfo = claims
    if let userInfo = claims {
        if let name = userInfo.name {
            self.nameLabel.text = "Hello \(name)"
        }
    }