powerfun-unity/Assets/Plugins/iOS/SignWithApple.m

124 lines
6.3 KiB
Mathematica
Raw Normal View History

2021-12-17 18:28:02 +08:00
#import "SignWithApple.h"
static AppleAuth * _appleAuth;
@implementation AppleAuth
+(AppleAuth *)instance{
if(_appleAuth==nil){
_appleAuth = [[AppleAuth alloc] init];
}
return _appleAuth;
}
#pragma mark- ID
- (void)authorizationAppleID{
NSLog(@"cypen");
if (@available(iOS 13.0, *)) {
// Apple ID
ASAuthorizationAppleIDProvider * appleIDProvider = [[ASAuthorizationAppleIDProvider alloc] init];
// AppleID
ASAuthorizationAppleIDRequest * authAppleIDRequest = [appleIDProvider createRequest];
//
// authAppleIDRequest.requestedScopes = @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail];
// KeyChain 使
// ASAuthorizationPasswordRequest * passwordRequest = [[[ASAuthorizationPasswordProvider alloc] init] createRequest];
NSMutableArray <ASAuthorizationRequest *> * array = [NSMutableArray arrayWithCapacity:2];
if (authAppleIDRequest) {
[array addObject:authAppleIDRequest];
}
// if (passwordRequest) {
// [array addObject:passwordRequest];
// }
NSArray <ASAuthorizationRequest *> * requests = [array copy];
// ASAuthorizationAppleIDProvider
ASAuthorizationController * authorizationController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:requests];
//
authorizationController.delegate = self;
//
authorizationController.presentationContextProvider = self;
//
[authorizationController performRequests];
}
}
#pragma mark- ASAuthorizationControllerDelegate
//
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization API_AVAILABLE(ios(13.0)) {
NSLog(@"cypcg");
if ([authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]]) {
ASAuthorizationAppleIDCredential * credential = (ASAuthorizationAppleIDCredential *)authorization.credential;
// App
NSString * userID = credential.user;
NSString * token = [[NSString alloc] initWithData:credential.identityToken encoding:NSUTF8StringEncoding];
// NSString * test = [[NSString alloc] initWithData:credential.authorizationCode encoding:NSUTF8StringEncoding];
// NSLog(test);
UnitySendMessage("LoginPanel", "OnAppleResp", [NSString stringWithFormat:@"true;%@,%@",userID,token ].UTF8String);
//
// //
// NSPersonNameComponents * fullName = credential.fullName;
// NSString * email = credential.email;
//
// // 使
// NSString * authorizationCode = [[NSString alloc] initWithData:credential.authorizationCode encoding:NSUTF8StringEncoding];
// NSString * identityToken = [[NSString alloc] initWithData:credential.identityToken encoding:NSUTF8StringEncoding];
//
// // unsupportedunknownlikelyReal
// ASUserDetectionStatus realUserStatus = credential.realUserStatus;
// NSLog(@"userID: %@", userID);
// NSLog(@"fullName: %@", fullName);
// NSLog(@"email: %@", email);
// NSLog(@"authorizationCode: %@", authorizationCode);
// NSLog(@"identityToken: %@", identityToken);
// NSLog(@"realUserStatus: %@", @(realUserStatus));
}else if ([authorization.credential isKindOfClass:[ASPasswordCredential class]]) {
// iCloudiOS 12
// 使
// ASPasswordCredential * passwordCredential = (ASPasswordCredential *)authorization.credential;
//
// NSString * user = passwordCredential.user;
// NSLog(user);
// UnitySendMessage("LoginPanel", "OnAppleResp", [NSString stringWithFormat:@"true,%@",user ].UTF8String);
//
// //
// NSString * password = passwordCredential.password;
// NSLog(@"userID: %@", user);
// NSLog(@"password: %@", password);
} else {
}
}
//
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError *)error API_AVAILABLE(ios(13.0)) {
NSString *errorMsg = nil;
NSLog(@"cypsb");
switch (error.code) {
case ASAuthorizationErrorCanceled:
errorMsg = @"用户取消了授权请求";
break;
case ASAuthorizationErrorFailed:
errorMsg = @"授权请求失败";
break;
case ASAuthorizationErrorInvalidResponse:
errorMsg = @"授权请求响应无效";
break;
case ASAuthorizationErrorNotHandled:
errorMsg = @"未能处理授权请求";
break;
case ASAuthorizationErrorUnknown:
errorMsg = @"授权请求失败未知原因";
break;
}
UnitySendMessage("LoginPanel", "OnAppleResp", [NSString stringWithFormat:@"false;%@",errorMsg ].UTF8String);
}
@end
void authorizationAppleID(){
AppleAuth * a = [AppleAuth instance];
[a authorizationAppleID];
}