Files
yingmeng-ios-switf/yinmeng-ios/Modules/Auth/VM/AuthAppleManager.swift
2024-02-29 00:42:41 +08:00

94 lines
2.8 KiB
Swift

//
// AuthAppleManager.swift
// yinmeng-ios
//
// Created by MaiMang 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 UIApplication.shared.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<String, Any>.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)
}
}
}