대부분의 서비스(특히 결제와 관련된 서비스)의 경우에는 이메일 혹은 휴대전화 인증을 필수로 받는다.
이메일인증도 좋지만, 나중에 서비스에서도 필수적으로 받아야할 정보이고 활용가치가 높다면 아무래도 이메일인증보다는 휴대전화 인증이 더 간편할 것이다.
왜냐하면 이메일의 경우 인증하려고 하는 이메일을 또 다시 들어가야 하기 때문에 만약 해당 이메일 계정 비밀번호를 까먹었다면 계정 비밀번호를 찾는 번거러운 과정을 거쳐야하기 때문이다.
아래의 경우 회원가입시 휴대전화 인증을 필수로 받아야하는 상황을 가정하여 설계하였다.
만약 소셜로그인을 사용한다면, 소셜로그인을 이용했을 경우에는 인증된 휴대폰번호를 받을 수 없기 때문에 반드시 추가적으로 휴대번호을 기입한 후 회원가입이 이루어지도록 합니다.
이해를 돕기위해 아래와 같은 폼 형식이라고 가정합니다.

여러가지 SMS 기능을 제공하는 서드파티 앱 중에서 Twilo 를 기준으로 했습니다.
최종적으로 사용자가 가입하기 버튼을 누르기전에 반드시 휴대전화 인증을 거쳐야 회원가입이 완료됩니다.
인증코드가 올바른지 유무를 회원가입하는 시점이 아니라 진짜 회원가입 이전에 검증받고 싶다면 어떻게 해야할까?
사실 8번의 과정을 진행할 수 있도록 하는 별도의 /verification-phone 이라고 하는 API 를 만들면 될 것이다.
그리고 최종 회원가입 요청 body 에는 isPhoneValid 필드를 추가해서 휴대폰 인증번호를 검증 받았는 지 여부를 서버가 알 수 있도록 한다.
{
...
"isPhoneValid": true
}
SMS 휴대폰인증 방식이 아니라 휴대폰 본인인증을 통한 (PASS 앱을 이용한 휴대폰 본인인증) 방식의 경우에는 인증번호를 저장하는 로직이 없어질 것이다. 왜냐하면 모든 인증자체를 알아서 해주기 때문이다.
https://www.nhncloud.com/kr/service/notification/sms
https://blog.useb.co.kr/verification