目前还没有官方的解决方法,但是可以考虑使用SFSafariViewController替代ASWebAuthenticationSession来解决这个问题。下面是一个示例代码:
let authURL = URL(string: "https://example.com/auth")!
let callbackURLScheme = "myapp"
let safariViewController = SFSafariViewController(url: authURL)
safariViewController.delegate = self
present(safariViewController, animated: true)
// SafariViewControllerDelegate callback methods
func safariViewController(_ controller: SFSafariViewController,
initialLoadDidRedirectTo URL: URL) {
if URL.absoluteString.starts(with: "\(callbackURLScheme)://") {
// Handle callback URL
}
}
func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
// User dismissed the view controller without authenticating
}