ASAuthorizationControllerDelegate方法未调用:Apple登录无响应求助
关于iOS 13 "Sign in with Apple" 输入正确密码后无响应的问题排查
我之前也遇到过几乎一模一样的问题!折腾了好一会儿才找到几个高频踩坑点,你可以挨个排查试试:
首要检查:
ASAuthorizationController的生命周期问题
你当前是在方法里创建了局部的ASAuthorizationController实例,而performRequests()是异步执行的——方法执行完毕后,这个局部变量会被ARC自动回收,导致后续授权完成时找不到代理对象,自然不会触发回调。解决办法是把控制器改成类的属性,保证它在授权流程完成前一直存在:
@available(iOS 13.0, *) private var appleAuthController: ASAuthorizationController? @objc private func didTapAppleButton() { let request = ASAuthorizationAppleIDProvider().createRequest() request.requestedScopes = [.fullName, .email] appleAuthController = ASAuthorizationController(authorizationRequests: [request]) appleAuthController?.presentationContextProvider = self appleAuthController?.delegate = self appleAuthController?.performRequests() }我当时就是栽在这个点上,改成属性后立刻就正常触发代理方法了!
确认
presentationContextProvider实现正确性
要确保presentationAnchor(for:)方法返回的是当前正确的显示窗口,比如:@available(iOS 13.0, *) extension YourViewController: ASAuthorizationControllerPresentationContextProviding { func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor { // 优先返回当前控制器的窗口,兼容iOS13+多场景模式 return view.window ?? UIApplication.shared.windows.first(where: { $0.isKeyWindow })! } }如果返回的窗口不正确,授权弹窗的后续流程会被阻塞,导致无法正常关闭或回调。
检查项目配置完整性
确认开发者后台已经为你的Bundle ID开启了「Sign in with Apple」功能,同时Xcode项目的Capabilities中,「Sign in with Apple」处于Enabled状态。配置不生效也会导致授权流程卡在验证环节。尝试更换测试环境
部分iOS13早期小版本存在Sign in with Apple的适配bug,你可以尝试升级到iOS13.1及以上版本测试,或者换一台物理设备试试(模拟器偶尔也会出现这类无响应问题)。
内容的提问来源于stack exchange,提问作者Kex
相关产品推荐
相关产品推荐

