매주 목요일~금요일, 저희 그룹을 고민하게 했던 문제와 그 해결 과정에 대해 이야기하는 주간 달 세뇨입니다. 오늘은 첫 번째 글이구요. 문제 인식과 해결 과정이야 모든 개발자가 겪는 프로세스라고 해도 과언은 아닐 것입니다. 또한 감사하게도 많은 개발자 동료분들이 자신이 겪었던 문제 해결 경험을 공유해주시곤 합니다. 저희 또한 이러한 작업을 통해 동료 간에, 나아가 개발자 전체의 지식 풀을 늘리는 데 기여하고자 한다는 목표가 있습니다.
다만 저희가 조금 더 신경쓰려고 하는 부분은, 같은 문제 해결 경험에 대해 쓰더라도 한결 재미있게, 더욱 실감나게 읽히도록 하고자 하는 것입니다. 이 점을 알고 보신다면 조금 더 재미있을지도..?
저희가 제작하고 있는 앱 “세뇨(Segno)”는, 일기로써의 정체성이 가장 큰 앱입니다. 일기는 개인의 것이죠. 이 말인즉, 개인의 것임을 나타낼 수 있는 증빙이 필요하다는 것입니다. 그래서 로그인 기능을 구현하는 것은 저희 앱에 있어 일종의 숙명이라고 할 수 있겠습니다.
또 저희는 출시 경험까지 하나의 경험으로 가져가기를 원했습니다. 그러기 위해서는 애플 앱 심사 가이드라인(https://developer.apple.com/kr/app-store/review/guidelines/)을 잘 살펴봐야 하는 것이 당연합니다. 심사 가이드라인 4조 8항에 의하면, 타사의 소셜 로그인 서비스를 지원하는 앱은 Apple 로그인 또한 동일한 옵션으로 제공해야 합니다.
한정된 시간, 요구되는 조건. 개발자들이 항상 마주하는 환경입니다. 저희는 상기한 두 가지 사항을 모두 고려해, OAuth를 활용한 애플 로그인부터 먼저 구현하기로 했습니다. 마침 저희가 자체적으로 서버를 운영하기로 했기 때문에, 서버 사이드가 준비될 때까지 기다려야 했습니다. 이 자리를 빌어, 서버 사이드를 준비하느라 애써주신 “감동”님께 감사드립니다.
운명의 그 날이 왔습니다. 11월 16일, 로그인 관련 기능이 서버에 구현되었습니다. 그리고 드디어 로그인 관련 작업을 시작하게 됩니다.
저희의 로그인 방식은 이렇습니다.
애플 로그인을 시도하는 과정 자체가 일종의 유효성 검증 과정인 셈입니다. 애플 로그인을 구현하기 위해서는 몇 가지 간단한 작업을 해 주면 됩니다. 퍼스트 파티라 그런지, 품이 덜 듭니다.
AuthenticationServices
를 import해 줍니다.UIButton
이어도 좋고, ASAuthorizationAppleIDButton
이어도 좋습니다. 심사에는 후자가 더 유리할 것 같다고 생각됩니다.@IBAction
이어도 좋고, addTarget
이어도 좋습니다. 물론 Rx도 가능합니다.