没有为 ASWebAuthenticationSession 调用会话完成处理程序
Posted
技术标签:
【中文标题】没有为 ASWebAuthenticationSession 调用会话完成处理程序【英文标题】:Session completion handler not being called for ASWebAuthenticationSession 【发布时间】:2020-03-16 08:48:07 【问题描述】:我正在尝试使用 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 视图不会像 WKWebView 那样关闭。 Web 视图左上角有取消选项,它调用完成处理程序时出错。
有没有办法在身份验证会话完成后关闭 webview?
【问题讨论】:
【参考方案1】:您的 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-urls
【讨论】:
以上是关于没有为 ASWebAuthenticationSession 调用会话完成处理程序的主要内容,如果未能解决你的问题,请参考以下文章
//没有为类型'Object'定义运算符'[]'。? [复制]
没有为“GoogleMapController”类型定义方法“addMarker”