通過 Apple 登錄
一、蘋果開發者後臺配置
二、Xcode配置
三、代碼實現
1、引入頭文件
#import <AuthenticationServices/AuthenticationServices.h>
2、遵守協議
<ASAuthorizationControllerDelegate>
3、授權請求
if (@available(iOS 13.0, *)) {
ASAuthorizationAppleIDProvider *appleIDProvider = [[ASAuthorizationAppleIDProvider alloc] init];
ASAuthorizationOpenIDRequest *request = appleIDProvider.createRequest;
request.requestedScopes = @[ASAuthorizationScopeFullName, ASAuthorizationScopeEmail];
ASAuthorizationController *controller = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]];
controller.delegate = self;
[controller performRequests];
}
4、實現相關代理方法
#pragma mark - ASAuthorizationControllerDelegate
- (void)authorizationController:(ASAuthorizationController *)controller
didCompleteWithAuthorization:(ASAuthorization *)authorization API_AVAILABLE(ios(13.0)){
NSMutableDictionary *dictInfo = [NSMutableDictionary dictionary];
if ([authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]]) {
ASAuthorizationAppleIDCredential *appleIDCredential = authorization.credential;
[dictInfo setValue:appleIDCredential.identityToken
forKey:@"identity_token"];
[dictInfo setValue:appleIDCredential.user
forKey:@"user"];
}
}
- (void)authorizationController:(ASAuthorizationController *)controller
didCompleteWithError:(NSError *)error API_AVAILABLE(ios(13.0)){
NSString *errorMsg = nil;
switch (error.code) {
case ASAuthorizationErrorUnknown:
errorMsg = @"授權請求失敗未知原因";
break;
case ASAuthorizationErrorCanceled:
errorMsg = @"用戶取消了授權請求";
break;
case ASAuthorizationErrorInvalidResponse:
errorMsg = @"授權請求響應無效";
break;
case ASAuthorizationErrorNotHandled:
errorMsg = @"未能處理授權請求";
break;
case ASAuthorizationErrorFailed:
errorMsg = @"授權請求失敗";
break;
}
}
參考文章 - iOS開發:Sign In With Apple(使用Apple登錄)
參考文章 - iOS 蘋果第三方登錄
參考文章 - 4.8 - 使用Apple登錄