我正在尝试使用ASWebAuthenticationSession web视图。身份验证完成后,不会调用会话完成处理程序。因此,web视图不会忽略。
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类型
运行以上代码后,将显示ASWebAuthenticationSession web视图,该视图为用户提供登录页面。身份验证完成后,web视图不会像WKWebView那样被取消。在web视图的左上角有一个cancel选项,它调用了带有错误的完成处理程序。
有没有一种方法可以在身份验证会话完成后关闭webview?
您的authURL中似乎缺少重定向URI,因此GitHub不知道将成功的auth重定向到哪里。
试试这个:
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