[ iOS ] Swift 애플 로그인 처리 및 정책 리젝 사유
- Coding/스위프트 iOS
- 2021. 3. 19. 12:54
애플 로그인 리젝
애플 로그인에 관련해서 리젝을 받은 경험과 애플 로그인의 특징을 포스팅해보려고 합니다. 한글로 검색해도 내용이 별로 없고 해서 리젝 처리에 도움이 되시길 바랍니다. 며칠 전에 애플 로그인에 대해 리젝을 받았는데 애플 측에서 다음과 같은 이슈를 제기했습니다.
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
We noticed that after users authenticate their account with Sign in with Apple,
they are required to take additional steps before they can access content
and features in your app. Specifically:
- Your app requires two-factor authentication after users use Sign in with Apple.
Sign in with Apple is designed to be a self-contained, all-in-one login system.
With security features like built-in two-factor authentication,
you can remove additional sign-up steps so users can focus on your
app's content and features.
Next Steps
To resolve this issue, please revise your app so the user is not required to provide
additional information or take unnecessary steps after using Sign in with Apple.
Resources
- Learn more about Data Management with Sign in with Apple.
- See how to contact users with anonymized emails using
the Private Email Relay Service.
Please see attached screenshot for details.
애플 로그인 정책
정리하자면 애플 로그인을 하고 그 다음에 별도의 로그인을 처리해서는 안 된다라는 의미입니다. 해당 서비스는 결제 모듈로 인해 특정 사용자의 인증을 미리 받는 부분이 있는데 애플 측에서는 이 부분이 로그인 처리라고 생각하나 봅니다. 아무튼 해당 값을 정리하면서 몇 가지 알게 된 사실이 있습니다.
- 애플은 고유의 사용자 ID 값을 발급한다.
- 애플은 가상의 사용자 이메일을 발급한다.
- ASAuthorizationAppleIDCredential 객체에 fullName, email, user 등의 정보가 포함된다.
- 특정 사용자의 email은 최초 접속이후에는 알 수 없다. (로그인 정보를 데이터베이스에 보관해야 함)
다음은 일반적으로 애플 로그인 후에 호출되는 델리게이트 합수입니다. email 부분이 중요한데 최초 한 번뿐이 알 수 없습니다.
@available(iOS 13.0, *)
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIdCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
if let email = appleIdCredential.email, let _ = appleIdCredential.fullName { // 최초 로그인
} else { // 재 로그인
}
}
}
Apple ID를 사용하는 앱
Apple ID를 사용하는 앱은 웹 사이트가 될 수도 있고 앱이 될 수도 있습니다. 만약 사용자가 직접 애플아이디 관리에서 Apple ID 사용 중단을 누르면 해당 유저 정보가 변경될 수 있습니다. 그러면 그때는 저 위의 함수에서 최초 로그인으로 인식하게 됩니다.
결국 email 정보를 최초에 받고 통신을 이용해서 내부 데이터베이스에 저장을 해놔야 한다는 의미입니다. 만약 사용 중단 후 다시 접속하면 그 값을 갱신해야겠죠.
support.apple.com/ko-kr/HT210426
또한 애플 로그인은 한 번에 다른 기타의 인증 처리 없이 메인 화면으로 가야 한다는 것입니다. 애플이 이를 보장해준다고 보는 것이죠. 때문에 애플 로그인 후에 어떠한 인증 절차가 있다면 리젝 사유가 될 수 있습니다. 또한 별개로 이전에 애플 로그인을 다크모드의 디자인을 적용했는데 그때도 리젝을 받았습니다.
애플은 확실히 자기 서비스에 대해서는 확고한 가이드가 있는 것 같습니다.
'Coding > 스위프트 iOS' 카테고리의 다른 글
[ iOS ] 앱 스토어 개인, 회사, 엔터프라이즈 차이점 (0) | 2021.04.15 |
---|---|
[ iOS ] 로컬 PUSH 와 APNS 푸시 차이점 완벽 정리 (0) | 2021.03.28 |
[ Xcode ] CocoaPods 설치 에러 수정 xcrun: error: invalid active developer path (0) | 2021.03.18 |
[ 스위프트 iOS ] Swift Package Manager (SPM) 사용하기 (0) | 2021.02.06 |
[ Swift ] 오픈소스 Kingfisher 이미지 라이브러리 사용법 (0) | 2020.10.21 |