You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:14:23