Apple로 로그인 — 앱에서 구현하세요!
게시 됨: 2020-01-14Apple로 로그인 — 작년 WWDC에서 Apple이 선보인 새로운 기능은 이제 iOS 13에서 사용할 수 있습니다. 이 기능은 애플리케이션 또는 웹사이트에서 간단하고 안전한 계정 등록 및 로그인을 제공합니다. 등록 양식을 작성하거나 소셜 미디어를 통해 로그인하는 대신 이제 계정을 만들고 Apple ID로 로그인하고 Face ID, Touch ID 또는 암호로 인증할 수 있습니다.
Apple로 로그인에 대한 간략한 설명:
- 빠르고 쉬운 계정 설정 및 로그인
- 확인된 이메일 주소
- 내장 보안
- 사기 방지
- 크로스 플랫폼 ️
- iOS 13 이상
이 기사 에서는 웹 버전과 통합하거나 백엔드와 통합하지 않고 iOS 장치에서 Apple로 로그인의 기본 구현에 중점을 둘 것입니다.
"Apple로 로그인" 기능은 어떻게 작동합니까?

"Apple로 로그인" 또는 "Apple로 계속"(응용 프로그램에서 구현하도록 선택한 버튼에 따라 다름)을 탭하면 이 솔루션의 가능성이 있는 정보 창이 나타납니다(두 번째 스크린샷). 그런 다음 "계속"을 탭한 후 응용 프로그램 소유자와 공유할 데이터에 대한 정보를 얻습니다.
여기에 Apple로 로그인을 사용하여 애플리케이션에 계정을 등록하는 두 가지 옵션이 있습니다.
- 이메일 주소 를 공유하면 실제 이메일 주소가 애플리케이션 또는 웹사이트와 공유됩니다.
- 이메일 주소를 숨기면 실제 이메일이 애플리케이션이나 웹사이트에 공유되지 않습니다. Apple은 @privaterelay.appleid.com 도메인을 사용하여 고유한 이메일을 생성합니다. 걱정하지 마세요. 이메일은 실제 이메일 주소로 전달되기 때문에 앱 소유자의 모든 이메일은 어쨌든 받은 편지함으로 전달됩니다. 앱 소유자는 Apple 도메인으로 생성된 이메일 주소만 알 수 있습니다.
옵션 중 하나를 선택하고 "계속"을 탭하면 전화 잠금 해제의 경우와 같이 Face ID, Touch ID 또는 암호를 입력하여 Apple ID를 확인합니다. 이 시점에서 사용자에 대한 고유 식별자를 사용하여 애플리케이션/웹사이트에 계정을 생성해야 합니다.

이전에 "Apple로 로그인" 응용 프로그램에서 사용한 경우 설정에 로그인하는 이 방법에 대한 세부 정보를 미리 보고 이 기능의 사용을 중지할 수 있습니다. 이렇게 하려면 설정 > Apple ID > 암호 및 보안 > Apple ID를 사용하는 앱 > 앱 선택으로 이동합니다.
"Apple로 로그인"을 구현하는 방법은 무엇입니까?
"Apple로 로그인"의 이론적인 부분을 읽은 후 구현을 진행할 수 있습니다.

우선, 프로젝트에서 "서명 및 기능"을 연 다음 +를 누르고 "Apple로 로그인" 기능을 추가해야 합니다.

WWDC 기조 연설에서 Apple은 이 기능을 구현하는 프로세스를 4단계로 나눕니다. 모든 단계는 아래에 설명되어 있습니다.
1. 버튼
처음에는 화면에 버튼을 추가해야 합니다. 이것은 AuthenticationService
프레임워크의 ASAuthorizationAppleIDButton
버튼이어야 합니다. 제목이 다른 두 가지 색상(흰색과 검정색)으로 제공됩니다. 버튼에 탭한 후 호출할 작업을 추가해야 합니다. 두 번째 요점에서 권한 부여 작업을 설명합니다.
인증 서비스 가져오기 let 버튼 = ASAuthorizationAppleIDButton(유형: .signIn, 스타일: .white) button.addTarget(self, action: #selector(appleIdButtonClicked), for: .touchUpInside) stackView.addArrangedSubview(버튼)
2. 승인 ️
여기에서 요청된 범위로 애플리케이션 또는 웹 사이트에서 계정을 만드는 데 필요한 정보만 제공하는 승인 requestedScopes
을 만듭니다. 제 경우에는 전체 이름과 이메일 주소입니다. 그런 다음 대리자를 설정하고 요청하십시오.
@objc func appleIdButtonClicked() { 요청하자 = ASAuthorizationAppleIDProvider().createRequest() request.requestedScopes = [.fullName, .email] let 컨트롤러 = ASAuthorizationController(authorizationRequests: [요청]) controller.delegate = 자기 controller.presentationContextProvider = 자기 controller.performRequests() }
3. 검증
Face ID, Touch ID 또는 비밀번호로 빠른 확인 후 승인 결과가 반환됩니다. 인증이 성공하면 didCompleteWithAuthorization
메소드는 AppleIdCredential
유형의 객체를 반환합니다. 그런 다음 ASAuthorizationAppleIdCredential
유형의 자격 증명인지 확인해야 합니다. 그렇다면 이 개체에서 고유한 사용자 ID, 전체 이름 및 이메일 주소( 사용자가 이전에 요청했습니다). 이 시점에서 필요한 정보만 제공하여 시스템에서 계정 생성을 진행할 수 있습니다. 오류가 발생하면 이 오류를 처리할 수 있는 didCompleteWithError
메서드로 반환됩니다.

func authorizationController(컨트롤러: ASAuthorizationController, didCompleteWithAuthorization 권한: ASAuthorization) { AppleIDCredential = authorization.credential을 다음과 같이 하면? AS승인AppleIDCredential { // 시스템에 계정을 만듭니다. } else if let passwordCredential = authorization.credential as? ASP암호 자격 증명 { // 기존 iCloud 키체인 자격 증명을 사용하여 로그인합니다. } } func authorizationController(컨트롤러: ASAuthorizationController, didCompleteWithError 오류: 오류) { 인쇄(오류) }
4. 변경 사항 처리
예를 들어 사용자가 Apple ID를 사용한 애플리케이션 로그인 사용을 중단했다는 사실에 대비해야 합니다. 이것은 사용자가 응용 프로그램을 다시 시작한 후에 적절하게 처리되어야 합니다.
계정 등록 중에 받은 사용자 ID를 사용하여 getCredentialState
메서드를 매우 빠르게 호출하여 Apple ID 자격 증명의 현재 상태를 얻을 수 있습니다. 이 메서드는 세 가지 상태를 반환할 수 있습니다.
-
authorized
— 애플리케이션을 계속 사용할 수 있는 권한 있는 사용자입니다. -
revoked
— 사용자를 로그아웃하고 선택적으로 다시 로그인하도록 로그인 화면으로 안내할 수 있습니다. -
notFound
— 사용자가 이전에 "Apple로 로그인"을 사용하지 않았음을 의미합니다. 이때 사용자에게 로그인 화면도 보여줍니다.
getCredentialState
메소드 호출은 didFinishLaunchingWithOptions
메소드의 AppDelegate
에 있어야 합니다.
또한 Apple은 자격 증명이 취소된 경우 이를 알리고 이 상태에 대해 위에서 언급한 방식으로 처리해야 하는 알림을 제공합니다.
appleIDProvider.getCredentialState(forUserID: userId) { credentialState, 오류 자격 증명 상태 전환 { 승인된 경우: // Apple ID 자격 증명이 유효합니다. 취소된 경우: // Apple ID 자격 증명이 취소되었습니다. 로그아웃합니다. 케이스 .notFound: // 자격 증명을 찾을 수 없으므로 로그인 UI를 표시합니다. 기본: 부서지다 } } // 해지 알림 등록 NotificationCenter.default.addObserver(forName: NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked, 객체: nil, 대기열: nil) { _ in // 사용자를 로그아웃하고 선택적으로 다시 로그인하도록 안내합니다. }
샘플 애플리케이션에서 4단계를 모두 구현한 후 모든 것이 작동하고 다음과 같이 보입니다.

내 앱에 "Apple로 로그인"을 추가해야 합니까?
응용 프로그램이 Facebook, Google 또는 LinkedIn과 같은 타사 로그인 방법을 사용하는 경우 새 지침에 따라 Apple로 로그인도 추가해야 합니다. 추가하지 않으면 애플리케이션이 거부될 수 있으며 Apple에서 검토하지 않을 수 있습니다. 아래는 뉴스 링크와 가이드라인의 인용문입니다.
Apple로 로그인하기 위한 새로운 지침 — 2019년 9월 12일 ️
오늘부터 App Store에 제출되는 새 앱은 다음 지침을 따라야 합니다. 기존 앱 및 앱 업데이트는 2020년 4월까지 따라야 합니다.
다음은 새로운 Apple의 기능을 사용하여 로그인을 제공하는 응용 프로그램입니다. 물론 매일 점점 더 많이 있습니다.

여기 내 GitHub에서 전체 프로젝트를 확인할 수 있습니다.
출처:
- https://developer.apple.com/videos/play/wwdc2019/706/
- https://developer.apple.com/videos/play/wwdc2019/516
- https://developer.apple.com/sign-in-with-apple/get-started/
- https://developer.apple.com/news/?id=09122019b
- https://developer.apple.com/app-store/review/guidelines/#sign-in-with-apple