전편에 이어서 Sign In With Apple 구현을 해보겠습니다
참고로, Apple Document를 참조했습니다
버튼 만들기
Main.storyboard에 UIView 추가
구분을 위해 색상을 설정하고
사이즈 상관없이 Horizontal, Vertical 제약과 width, height 제약 추가
ViewController로 가서 UIView를 IBOutlet으로 연결
signInView라는 이름으로 연결해준다
그러면 화면설계는 끝!
ViewController에서 AuthenticationServices를 import 해준다
그리고 애플 로그인 버튼을 구현해줄 메소드 addButton() 추가
ASAuthorizationAppleIDButton으로 signIn 버튼 구현
버튼 스타일은 authorizationButtonStyle로 선택가능
(흰색, 까만색, 검은 테두리 흰색 총 세가지 있음)
button.addTarget으로 누를때 실행할 동작 설정
(handleAppleSignInButton은 아직 구현하기 전이므로 경고가 뜬다!)
addSubview로 애플 로그인 버튼을
미리 만들어놓은 signInView에 추가해준다
그 뒤에 viewDidLoad()에 addButton() 메소드 추가
다음으로 버튼을 누를때 수행되는 핸들러 handleAppleSignInButton 메소드 구현
첫번째 줄에서 request 생성
요청 날릴 것은 fullName, email 두 가지로 설정해준다
그리고 세번째 줄에서 request를 보내줄 controller 생성
controller의 delegate와 presentationContextProvider 설정 후,
performReqeusts()로 요청을 보낸다
중간 결과 확인
정확한 결과 확인을 위해 다소 강렬한 색상으로 배경 변경..
결과
버튼 구현은 끝!
이제 결과를 받아오도록 Controller Delegate 구현 (Complete, Error)
ViewController를 extension하여 ASAuthorizationControllerDelegate를 상속한다
authorizationController의 didCompleteWithAuthorization, didCompleteWithError 메소드 두 가지 생성
- didCompleteWithAuthorization은 authorization이 성공 후 동작
- didCompleteWithError는 authorization 실패 시 구현되는 동작
authorizationController(controller:didCompleteWithAuthorization:)
해당 함수에서 authorization 파라미터는 객체로, auth에 대한 모든 정보를 가진다
우리는 그 중에서도 ASAuthorizationAppleIDCredential을 이용!
credential은 다음과 같은 사용자 정보를 가진 인스턴스 프로퍼티다
자세한 정보는 Apple Document 참조 (https://developer.apple.com/documentation/authenticationservices/asauthorizationappleidcredential)
원하는 정보를 받아와서 처리할 수 있다는 점!
그럼 여기서 구현은 끝이다…
다음으로는 Apple Sign In에 대한 다른 정보를 포스팅할 예정
### Reference
Get Started