苹果登录

- (void)start {
    ASAuthorizationAppleIDProvider *appleIDProvider = [ASAuthorizationAppleIDProvider new];
        ASAuthorizationAppleIDRequest *request = appleIDProvider.createRequest;
        request.requestedScopes = @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail];
        
        ASAuthorizationController *authorizationController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]];
        authorizationController.delegate = self;
        authorizationController.presentationContextProvider = self;
        [authorizationController performRequests];  
}
#pragma mark - ASAuthorizationController delegate
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization  API_AVAILABLE(ios(13.0)){
    if ([authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]]) {
        ASAuthorizationAppleIDCredential *appleIDCredential = authorization.credential;
///保存下面这个用户信息用来后续验证用户是否还有效
        NSString *identifier = appleIDCredential.user;
        NSPersonNameComponents *fullName = appleIDCredential.fullName;
        NSString *email = appleIDCredential.email;
        NSString *authorizationCode = [[NSString alloc] initWithData:appleIDCredential.authorizationCode encoding:NSUTF8StringEncoding];
        NSString *token = [[NSString alloc] initWithData:appleIDCredential.identityToken encoding:NSUTF8StringEncoding];
        ///交付后台用作注册、登录
        
    } else if ([authorization.credential isKindOfClass:[ASPasswordCredential class]]) {
        
    }
}
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError *)error  API_AVAILABLE(ios(13.0)){
    switch (error.code) {
        case ASAuthorizationErrorUnknown: {
            
            break;
        }
        case ASAuthorizationErrorCanceled: {
            break;
        }
        case ASAuthorizationErrorInvalidResponse: {
            
            break;
        }
        case ASAuthorizationErrorNotHandled: {
            
            break;
        }
        case ASAuthorizationErrorFailed: {
            
            break;
        }
            
        default:
            break;
    }
}

#pragma mark - Section
- (ASPresentationAnchor)presentationAnchorForAuthorizationController:(ASAuthorizationController *)controller  API_AVAILABLE(ios(13.0)){
    return self.window;
}
- (void)volidateAuthorizationAppleID {
    if (@available(iOS 13, *)) {
        ASAuthorizationAppleIDProvider *appleIDProvider = [ASAuthorizationAppleIDProvider new];
        NSString *user = xxx; ///授权时保存的user
        if (user.length) {
            [appleIDProvider getCredentialStateForUserID:user completion:^(ASAuthorizationAppleIDProviderCredentialState credentialState, NSError * _Nullable error) {
                switch (credentialState) {
                    case ASAuthorizationAppleIDProviderCredentialRevoked:
                    case ASAuthorizationAppleIDProviderCredentialNotFound:
                     {
                       ///苹果账号已经失效
                        break;
                    }
                    case ASAuthorizationAppleIDProviderCredentialAuthorized: {
                        break;
                    }
                    case ASAuthorizationAppleIDProviderCredentialTransferred:{
                        break;
                    }
                        
                    default:
                        break;
                }
            }];
        }
        
    } else {
        
    }
    
}

猜你喜欢

转载自www.cnblogs.com/yuxiaoyiyou/p/12889723.html
今日推荐