Я пытался выяснить, как интегрировать ASWebAuthenticationSession
(чтобы выполнить вход через Oauth
) с SwiftUI
. Я нигде не могу найти документацию по тому же онлайн, и мне было интересно, может ли кто-нибудь с большим опытом работы с SwiftUI и iOS dev сказать мне, как я могу добиться чего-то в этом направлении. В настоящее время мне нужна система, чтобы кто-то нажимал кнопку «Вход», которая затем открывает ASWebAuthSession
и позволяет пользователю войти в систему, прежде чем перенаправить их обратно в мое приложение и загрузить другое представление SwiftUI.
У меня есть в моем ContentView
одна кнопка, которая вызывает эту функцию:
func getAuthTokenWithWebLogin() {
let authURL = URL(string: "https://test-login.blabla.no/connect/authorize?scope=openid%20profile%20AppFramework%20offline_access&response_type=code&client_id=<blalblalba>&redirect_uri=https://integration-partner/post-login")
let callbackUrlScheme = "no.blabla:/oauthdirect"
webAuthSession = ASWebAuthenticationSession.init(url: authURL!, callbackURLScheme: callbackUrlScheme, completionHandler: { (callBack:URL?, error:Error?) in
// handle auth response
guard error == nil, let successURL = callBack else {
return
}
let oauthToken = NSURLComponents(string: (successURL.absoluteString))?.queryItems?.filter({$0.name == "code"}).first
// Do what you now that you've got the token, or use the callBack URL
print(oauthToken ?? "No OAuth Token")
})
// Kick it off
webAuthSession?.start()
}
Но я получаю эту ошибку:
Невозможно запустить ASWebAuthenticationSession без предоставления контекста представления. Установите presentationContextProvider перед вызовом -start.
Как это сделать в SwiftUI
? Любые примеры будут фантастичны c!