0

我正在尝试使用 ASWebAuthenticationSession 网络视图。身份验证完成后,不会调用会话完成处理程序。因此,网络视图不会关闭。

guard let authURL = URL(string: "https://github.com/login/oauth/authorize?client_id=<client_id>/") 
else { return }
let scheme = "octonotes"
session = ASWebAuthenticationSession.init(url: authURL, callbackURLScheme: scheme, completionHandler: { callbackURL, error in
       // Handle the callback.
       print(callbackURL!)
       print(error!)      
        })
session?.presentationContextProvider = self
session?.start()

我在 info.plist 中设置了回调 url 方案。同样在 Targets -> info -> URL Types 中更新它看起来像: URL Types

运行上述代码后,会出现 ASWebAuthenticationSession Web 视图,它为用户提供登录页面。身份验证完成后,Web 视图不会像 WKWebView 那样关闭。Web 视图的左上方有取消选项,它会调用错误的完成处理程序。

身份验证会话完成后有没有办法关闭 webview?

4

1 回答 1

0

看起来您在 authURL 中缺少重定向 URI - 所以 GitHub 不知道将成功的身份验证重定向到哪里。

尝试这个:

let scheme = "octonotes"
guard let authURL = URL(string: "https://github.com/login/oauth/authorize?client_id=<client_id>&redirect_uri=\(scheme)://authcallback")

请记住,您可能还缺少一些其他参数,请查看此处以查看您可以提供的其他参数https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#redirect-网址

于 2020-04-18T12:03:59.360 回答