# 이걸 왜 공부하게 되었나요?

애플은 2019년 애플 로그인 기능을 발표했습니다. 동시에 앱 내에 다른 소셜 로그인 서비스를 사용하고 있다면 반드시! 애플 로그인을 제공해야 한다는 심사지침도 함께 내놓았습니다.

# 공부한 내용 정리하기

0. 전반적인 플로우

일단 클라이언트가 해야될 작업은 크게 세가지이다.

  1. 애플 로그인 시도하기
  2. 애플 로그인 정보 반환 받기
  3. code 전송하기

Untitled

1. 애플 로그인 시도하기

i) Capability 추가하기

ii) 버튼 추가하기

iii) Apple Login 인증 창 띄우기

2. 애플 로그인 정보 반환 받기

Apple ID의 인증 결과 및 요청 값인 email과 fullName을 전달받기 위해 채택합니다. → ASAuthorizationControllerDelegate

func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
        switch authorization.credential {
            /// Apple ID
        case let appleIDCredential as ASAuthorizationAppleIDCredential:
            
            /// 계정 정보 가져오기
            let userIdentifier = appleIDCredential.user
            let fullName = appleIDCredential.fullName
            let email = appleIDCredential.email
            if  let authorizationCode = appleIDCredential.authorizationCode,
                let identityToken = appleIDCredential.identityToken,
                let authString = String(data: authorizationCode, encoding: .utf8),
                let tokenString = String(data: identityToken, encoding: .utf8) {
                print("authorizationCode: \\(authorizationCode)")
                print("identityToken: \\(identityToken)")
                print("authString: \\(authString)")
                print("tokenString: \\(tokenString)")
                
            }
            print("User ID : \\(userIdentifier)")
            print("User Email : \\(email ?? "")")
            print("User Name : \\((fullName?.givenName ?? "") + (fullName?.familyName ?? ""))")
                
                
            default:
                break
            }
        }
        
        // Apple ID 연동 실패 시
        func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
            // Handle error.
        }
    }

Untitled

애플 로그인 구현 for Backend