У меня есть реализация единого входа на iOS 13 в Swift 5:
let callbackURLScheme = "myb://auth"
authSession = ASWebAuthenticationSession(url: url, callbackURLScheme: callbackURLScheme, completionHandler: { (callbackURL: URL?, error: Error? ) in
guard error == nil, let successURL = callbackURL else {
print(error!)
return
}
print(successURL.absoluteString)
let queryItems = URLComponents(string: successURL.absoluteString)?.queryItems
let token = queryItems?.filter({ $0.name == "token" }).first?.value
print(token)
})
if #available(iOS 13.0, *) {
authSession?.presentationContextProvider = self
authSession?.prefersEphemeralWebBrowserSession = false
} else {
// Fallback on earlier versions
}
authSession?.start()
Также попытался сделать то же самое в WKWebView и встроенном контроллере Safari, и результаты те же: После входа в систему и все перенаправления заканчиваются «Токен доступа не имеет требуемых областей».
Если я использую тот же URL-адрес единого входа с обычным браузером Safari для мобильных устройств, он заканчивается действительным токеном сеанса.
Мне интересно, почему он отличается и как заставить его работать в приложении?