Firebase의 전화인증로그인과 Apple의 APNs

이 글은 개념을 잡기 위한 설명을 하기 위해서 디테일하게 작업 스텝을 하나하나 따라가지는 않을 겁니다. 이 글에서 개념을 잡고, 다른 인터넷 포스트를 보시면서 디테일 작업을 하시는 걸 추천드립니다.

iOS 앱을 만들 때 Firebase Authentication의 전화인증을 사용하고 싶다면 어떻게 해야 할까요?

우선 전화번호 인증에 대해서 직관적으로 생각해보면, 1) 앱에서 전화번호를 Firebase로 전송하고, 2) Firebase는 해당 전화번호로 6자리의 핀코드를 보내면, 3) SMS로 전송된 해당 핀코드를 사용자가 앱에 입력하고, 4) 앱은 그 핀코드를 Firebase로 전송해서 5) Firebase가 앱으로 부터 받은 핀코드가 자신이 보냈던 핀코드인지를 확인하면 종료 일 것 같잖아요? 하지만, 전화번호 인증을 사용할 때 Firebase는 해당 인증 Request가 올바른 앱으로부터 요청된 것인지 확인하는데, 이 때문에 꽤 여러 단계의 귀찮은 작업을 거치게 돼요.

즉, 1)번과 2)번 사이에서 Firebase는 전화번호 인증 Request가 정당한 앱에서부터 전송된 것인지를 확인하는 작업을 거치고, 그 이후 SMS를 보내게 되는데요. 이 확인작업을 위해 Silent APNs notification을 사용합니다. 처음 로그인하는 전화번호가 로그인을 시도하면, Firebase는 Silent Push Notification을 사용해 토큰을 device로 보내게 돼요. 어쨌든 어쩔 수 없이 우리는 APNs 세팅을 해야 한다는 걸 알 수 있겠죠?

APNs는 위와 같은 구조로 돌아갑니다. 그 중 Provider라는 백앤드 서버의 역할을 Firebase가 하게 되는 거에요.(iOS가 아니라 안드로이드인 경우에는 Firebase의 FCM을 사용하게 될테니 바깥으로 보이는 작업 프로세스는 조금 더 간단해지긴 할겁니다.) 그러면, APNs 세팅을 어떤 순서로 하면 될까요? 저는 개발환경을 기준으로 설명을 해볼께요. 어차피 그게 먼저일테니까.

먼저 애플의 개발자 사이트에서 Push Notification을 사용하려는 앱의 Identifier에 Push Notification 기능을 활성화 시키셔야 합니다. 설명은 필요 없을 것 같네요.

다음은 개발/테스트를 수행할 사용자의 Certification을 받아야겠죠? 먼저 개발용 랩탑의 키체인에서 APNs Certification을 생성할 인증서 요청을 생성합니다. 그리고, 마찬가지로 애플 개발자 사이트에서 해당 인증서 요청을 사용해 APNs를 사용할 앱의 APNs 서비스 Certificate을 생성합니다. 마지막으로 이 Certification을 다운로드해서 키체인에 등록하시면 됩니다. 그러면, 개발자의 맥북에서 APNs를 테스트하실 수 있게 됩니다.

마지막으로 남아있는게 뭐죠? 네. 백엔드 서버 설정을 아직 안했어요. 백엔드 서버에 APNs 키를 등록해줘야 APNs에 제대로 메시지 요청을 보낼 수 있습니다. 애플 개발자 사이트에 들어가면 Key 매뉴가 있는데, 이 매뉴에서 백엔드 서버용 APNs 키를 발급할 수가 있어요. 다운로드한 이 키를 백엔드 서버 에 등록해주면 됩니다. 위의 경우에는 Firebase 서버에 등록을 해주어야 하고, Firebase 설정에서 그 작업을 하실 수 있습니다.

이 작업 말고도 reCAPTCHA 인증작업(Push Notification을 받을 수 없을 때 사용) 세팅도 해주셔야 하는데, 이건 reCAPTCHA를 위한 URL을 custom URL scheme에 추가해주시기만 하면 됩니다. 이 URL은 GoogleService-Info.plist를 뒤지셔도 되지만, 세팅 안하고 실행하시면 알아서 에러메시지에 친절하게 긁어 붙여 넣으라고 보여줘요. 편한대로 작업하시면 될겁니다.

글을 쓰고, 그림을 그립니다. 멍하니 있는 걸 더 좋아하긴 하지만...
Posts created 495

Related Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top