| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- //
- // AppleLoginManager.m
- // HYHY
- //
- // Created by qitewei on 2025/7/22.
- //
- #import "AppleLoginManager.h"
- #import <AuthenticationServices/AuthenticationServices.h>
- @interface AppleLoginManager()<ASAuthorizationControllerDelegate, ASAuthorizationControllerPresentationContextProviding>
- @property (nonatomic, strong) UIWindow *window;
- @end
- @implementation AppleLoginManager
- - (instancetype)initWindow:(UIWindow *)window
- {
- self = [super init];
- if (self) {
- self.window = window;
- }
- return self;
- }
- - (void)startAuthorization {
- if (@available(iOS 13.0, *)) {
- ASAuthorizationAppleIDProvider *appleIDProvider = [ASAuthorizationAppleIDProvider new];
- ASAuthorizationAppleIDRequest *request = [appleIDProvider createRequest];
- request.requestedScopes = @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail];
-
- ASAuthorizationController *authController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]];
- authController.delegate = self;
- authController.presentationContextProvider = self;
- [authController performRequests];
- }
- }
- #pragma mark - ASAuthorizationControllerDelegate
- - (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization API_AVAILABLE(ios(13.0)){
- if (@available(iOS 13.0, *)) {
- ASAuthorizationAppleIDCredential *appleIDCredential = authorization.credential;
- NSString *userID = appleIDCredential.user ?: @"";
- NSData *identityTokenData = appleIDCredential.identityToken;
- NSString *identityTokenStr = [[NSString alloc] initWithData:identityTokenData encoding:NSUTF8StringEncoding] ?: @"";
- NSString *email = appleIDCredential.email;
- NSPersonNameComponents *fullName = appleIDCredential.fullName;
- NSString *nickname = [NSString stringWithFormat:@"%@ %@", fullName.givenName ?: @"", fullName.familyName ?: @""];
- NSLog(@"Apple error---------: %@,%@", identityTokenStr, userID);
- if (self.onAuthSuccess) self.onAuthSuccess(identityTokenStr, nickname, userID);
- }
- }
- // 登录失败
- - (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError *)error API_AVAILABLE(ios(13.0)){
- NSLog(@"Apple error: %@", error.localizedDescription);
- }
- #pragma mark - ASAuthorizationControllerPresentationContextProviding
- // 指定在哪个窗口弹出授权页面
- - (ASPresentationAnchor)presentationAnchorForAuthorizationController:(ASAuthorizationController *)controller API_AVAILABLE(ios(13.0)){
- return self.window;
- }
- @end
|