集成Sign in with Apple报错AuthorizationError Code=1001如何解决?
苹果登录报错Code=1001解决方案
Error Code=1001 对应系统定义的ASAuthorizationErrorCanceled,除了用户主动点击授权弹窗取消按钮的场景外,配置错误、代码逻辑缺失也会触发该报错,可按以下步骤排查:
- 检查苹果登录请求构造逻辑,你当前仅上传了代理实现,未提供请求发起代码,标准的请求构造写法如下:
if #available(iOS 13.0, *) { let appleIDProvider = ASAuthorizationAppleIDProvider() let request = appleIDProvider.createRequest() // 仅可传入系统定义的.fullName和.email权限,不要传空或自定义权限 request.requestedScopes = [.fullName, .email] let authorizationController = ASAuthorizationController(authorizationRequests: [request]) authorizationController.delegate = self // 必须设置presentationContextProvider,漏设会导致弹窗无法弹出,系统自动返回取消错误 authorizationController.presentationContextProvider = self authorizationController.performRequests() }
- 检查是否实现了
ASAuthorizationControllerPresentationContextProviding代理,该代理为必填项,实现代码如下:
@available(iOS 13.0, *) extension LoginViewController: ASAuthorizationControllerPresentationContextProviding { func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor { return self.view.window! } }
检查运行环境:
- 模拟器需要先登录有效的Apple ID并开启iCloud功能
- 真机不要使用越狱设备,越狱设备会被系统直接拦截苹果登录请求
- 确认当前使用的Apple ID没有被限制使用苹果登录功能
检查配置一致性:确认Xcode中配置的Bundle ID和开发者后台Certificates and ids中绑定的Bundle ID完全一致,Sign in with Apple能力已开启且同步到所有构建目标。
现有代码优化建议
你当前提供的代理实现存在两处隐患,建议调整:
- 避免强制解包
fullName?.givenName,苹果登录仅首次授权会返回fullName和email字段,后续授权这两个字段会返回空,强制解包会触发崩溃,建议修改为可选绑定处理 - 当前所有分支都调用
showalertforregister,没有区分授权成功、授权失败的场景,建议拆分逻辑做不同处理
内容的提问来源于stack exchange,提问作者app android
相关产品推荐
相关产品推荐

