// // AuthAppleManager.swift // yinmeng-ios // // Created by yinmeng on 2024/2/29. // import Foundation import AuthenticationServices typealias AuthCompletion = ([String: Any]?) -> Void class AuthAppleManager:NSObject,ASAuthorizationControllerDelegate,ASAuthorizationControllerPresentationContextProviding { public static var manager = AuthAppleManager.init() var completion : AuthCompletion? @available(iOS 13.0, *) func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor { return keyWindow; } @available(iOS 13.0, *) func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) { if authorization.credential.isKind(of: ASAuthorizationAppleIDCredential.self) { let maiCssl : ASAuthorizationAppleIDCredential = authorization.credential as! ASAuthorizationAppleIDCredential let maitokenJon = String.init(data: maiCssl.identityToken ?? Data.init(), encoding: String.Encoding.utf8) let maicodeCa = String.init(data: maiCssl.authorizationCode ?? Data.init(), encoding: String.Encoding.utf8) var reusltScom = Dictionary.init() reusltScom.updateValue(maiCssl.user , forKey: "unionid") reusltScom.updateValue(maitokenJon ?? "", forKey: "openid") reusltScom.updateValue(maitokenJon ?? "", forKey: "access_token") completion?(reusltScom) }else{ HUDTool.show(with:"授权失败") } } func authorizatio(block:AuthCompletion?) -> Void { if #available(iOS 13.0, *){ completion = block let providerCac : ASAuthorizationAppleIDProvider = ASAuthorizationAppleIDProvider.init() let mairequestMka : ASAuthorizationAppleIDRequest = providerCac.createRequest() mairequestMka.requestedScopes = [ASAuthorization.Scope.fullName,ASAuthorization.Scope.email] let maicontrollerKKk : ASAuthorizationController = ASAuthorizationController.init(authorizationRequests: [mairequestMka]) maicontrollerKKk.delegate = self maicontrollerKKk.presentationContextProvider = self maicontrollerKKk.performRequests() } } @available(iOS 13.0, *) func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) { let maierr = error as? NSError if maierr != nil { var message = "" switch maierr?.code { case ASAuthorizationError.canceled.rawValue: message = "授权取消" break case ASAuthorizationError.failed.rawValue: message = "授权请求失败" break case ASAuthorizationError.invalidResponse.rawValue: message = "授权请求无响应" break case ASAuthorizationError.notHandled.rawValue: message = "授权请求失败" break case ASAuthorizationError.unknown.rawValue: message = "授权请求失败" break default: break } HUDTool.show(with: message) } } }