zoukankan      html  css  js  c++  java
  • 苹果登录

    - (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 {
            
        }
        
    }

    返回数据示例(用户姓名、邮箱信息只有第一次授权的时候能采集到,往后均不可获得,下面这些是第二次登录时获取的信息)

    user
    001977.a98624cc686e4bdb8521554ae4d9ea77.0652
    
    authorizedScopes 数组为空
    
    identityToken
    
    eyJraWQiOiJlWGF1bm1MIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLm1pZGVhaW90Lm1hbGwiLCJleHAiOjE2MTI1OTQ3MzEsImlhdCI6MTYxMjUwvCMzMSwic3ViIjoiMDAxOTc3LmE5ODYyNGNjNjg2ZTRiZGI4MzIxNTU0YWU0ZDllYTc3LjA2NTIiLCJjX2hhc2giOiJvTmZvNVFzTTRnY1dKcU96REFNUHVBIiwiZW1haWwiOiI0Y2p3NnRxbnVjQHByaXZhdGVyZWxheS5hcHBsZWlkLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImlzX3ByaXZhdGVfZW1haWwiOiJ0cnVlIiwiYXV0aF90aW1lIjoxNjEyNTA4MzMxLCJub25jZV9zdXBwb3J0ZWQiOnRydWV9.ewYgu6yOrTaLnWWxyrq0zXvsFUVRbZ5slEG2Ua5-8Sl4U2fSDrCELTYmm_acwZBznE0cJjBiC3s9oqr-mm_l-5X0mlh5OSfNRN9v41TjAcx5hu8SNKdkmtOUr1D3irWOh4dJ-zn7uJyXpiiZCS6k5ZhoitWMUzKVUIXysLbBK1LH0ZyIq8alYaHRD9yn4092j2n8UVgF_aiu9c5mQWL2gsv8B1gWRsMu_Hj9vppXPMTg0S7Dl4G6ErfSwNtUcuXq15hZ3IhHvf5Zz7TTaBcZB3aJiibCOrDJQe7lO1enorPNJrJuWmzKygf_njxLIJ9AcPbptUEu6jAOxvi489V_-g
    
    authorizationCode
    cbcb5908c30c549da099479b8763b06c9.0.rrzxx.b1eQLW4bqSSfge98eLGzQg

    关于与后台验证相关内容的文章

    https://blog.csdn.net/pyf09/article/details/109100108   数据范例

    https://blog.csdn.net/qq_45139677/article/details/109075401 后台java校验代码

  • 相关阅读:
    Java中-classpath和路径的使用
    总是分不清
    Maven Web项目部署到Tomcat下问题
    一、数据设计规范
    一、入职学习
    一、服务器控件
    WebApiThrottle限流框架
    一、接口的规则
    一、免费API调用
    十、锁
  • 原文地址:https://www.cnblogs.com/yuxiaoyiyou/p/12889723.html
Copyright © 2011-2022 走看看