필요한 설정들은 이전 포스팅을 참조해주세요
https://developerjunha.tistory.com/4
우선 ViewController에서 AuthenticationServices를 import 해줍니다.

애플 로그인 버튼을 만들어보겠습니다.
우선 VC에 버튼을 생성합니다.
애플이 자체적으로 ASAuthorizationAppleIDButton을 만들어두었네요.
authorizationButtonStyle로 버튼 스타일을 선택할 수 있습니다.(white, black, whiteOutline)
let appleButton = ASAuthorizationAppleIDButton(authorizationButtonType: .signIn, authorizationButtonStyle: .black)
저는 black로 만들어보았습니다.
다른 설정은 아무것도 하지 않고, view에 올려보니 이런 버튼이 만들어지네요.

버튼을 누를 때 수행할 핸들러도 구현해줘야겠죠
첫째줄에서 request를 생성하고
fullName, email을 요청해봅니다.
delegate와 presentationContextProvider 설정하고
performRequests()로 요청을 보냅니다.
@objc func tapAppleSignInButton(_ sender: ASAuthorizationAppleIDButton) {
let request = ASAuthorizationAppleIDProvider().createRequest()
request.requestedScopes = [.fullName, .email]
let controller = ASAuthorizationController(authorizationRequests: [request])
controller.delegate = self as? ASAuthorizationControllerDelegate
controller.presentationContextProvider = self as? ASAuthorizationControllerPresentationContextProviding
controller.performRequests()
}
simulator에서 버튼을 눌러보면 simulator에 Apple ID를 등록하는 화면으로 이동합니다.


로그인 후 다시 버튼을 클릭해보면 로그인 화면이 뜹니다.
여기선 로그인을 모두 해도 아직 따로 설정한게 없기때문에 계속 로딩만 하네요.

이제 결과를 받아올 수 있는 ASAuthorizationControllerDelegate를 구현합니다.
- authorizationController:didCompleteWithAuthorization - 성공처리
- authorizationController:didCompleteWithError - 실패처리
authorizationController(controller:didCompleteWithAuthorization:)의 authorization파라미터는 객체로, auth에 대한 모든 정보를 가진다고 합니다.
extension ViewController: ASAuthorizationControllerDelegate {
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let credential = authorization.credential as? ASAuthorizationAppleIDCredential {
let user = credential.user
print("User: \(user)")
guard let email = credential.email else { return }
print("Email: \(email)")
}
}
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("error: \(error)")
}
}

https://developer.apple.com/documentation/authenticationservices/asauthorizationappleidcredential
Apple Developer Documentation
developer.apple.com
https://developer.apple.com/sign-in-with-apple/get-started/
Getting Started - Sign in with Apple - Apple Developer
Make signing in easy. Provide a fast, secure, and privacy-friendly way for users to set up an account and start using your apps and websites.
developer.apple.com
https://support.apple.com/ko-kr/HT210318
Apple로 로그인이란 무엇입니까?
Apple로 로그인은 이미 사용 중인 Apple ID로 타사 앱 및 웹 사이트에 개인 정보 노출 없이 빠르고 손쉽게 로그인할 수 있는 방식입니다.
support.apple.com
https://support.apple.com/ko-kr/HT210425#hideemail
나의 이메일 가리기란 무엇입니까?
나의 이메일 가리기를 사용하면 독특한 무작위 이메일 주소를 생성하여 앱이나 웹 사이트 등에서 사용할 수 있으므로 개인 이메일을 비공개로 유지할 수 있습니다. 이 기능은 Apple로 로그인 및 i
support.apple.com
https://support.apple.com/ko-kr/HT210426#turnoffemail
Apple로 로그인 기능을 사용하는 앱 관리하기
Apple로 로그인 기능을 사용하면 제휴 타사 앱 및 웹 사이트에 Apple ID로 로그인할 수 있습니다. Apple로 로그인 기능을 사용하는 앱을 확인하고 관리하는 방법에 대해 알아봅니다.
support.apple.com