프로젝트에서 소셜 로그인 / 간편 회원가입 부분을 맡아 개발하였을때의 경험이다.
소셜 가입관련하여 네이버/카카오 이렇게 두곳에 대한 API 를 연결하여 구현하였다.
회원가입을 위하여 회원정보의 이메일, 이름, 전화번호는 필수동의항목으로 해두었다. 테스트를 위하여 내 계정으로 확인하였다. 카카오 API 를 통해 확인한 정보는 +82 010-000-0000 과 같은 형식의 형태였다. 전화번호의 형태를 확인한 나는 공백과 '-' 부분을 이용하여 split 함수 등을 통하여 데이터를 원하는 형태로 가공하여 회원가입을 하는 형태로 코드를 짜두었다.
테스트상 문제는 없었고 실제 프로젝트 오픈 후 운영기간도 꽤나 지나고, 회원가입, 로그인쪽 관련한 기억이 내 머릿속에서 사라져 갈때 쯔음 내가 예상치 못한 3가지의 문제가 발생하여 나를 당황시켰다... 😥
1. 필수 동의항목에 대한 데이터가 없을 수가 있다...?
카카오 API 를 이용시 카카오 Developers 에서 애플리케이션을 만들고 API 에 대한 설정을 할 수 있는데

카카오계정(이메일), 이름, 카카오계정(전화번호)에 대하여 위와 같이 설정을 해두었다. 필수 동의 항목이니 해당 항목들에 대하여 정보를 다 제공받을수 있겠지? 라는 내 생각은 보기 좋게 빗나갔다...
한 회원이 이름이 없이 회원가입을 해버린것이다... 카카오 회원정보에 이름없이 가입한 회원이 있었던것으로 생각된다..
값이 없는건 생각하지 상황이었기에 카카오 Developers 설정쪽을 확인한 결과

위 이미지와 같은 설정을 발견하여 이메일과 이름에 대하여 해당 설정을 추가해주었다. 전화번호 같은경우에는 해당 설정이 존재하지 않았다. 카카오 회원가입시 전화번호는 반드시 입력해서 데이터가 없는 경우가 없나? 라는 생각이 들었다.
2. 필수에 수집도 받을수 없는데 ... 없어?
하지만 그런 내 예상은 보기좋게 빗나갔다. 이름이 없이 가입한 회원을 확인한 이후 API 로그 데이터를 확인해보던 중 심지어 전화번호가 없는 경우를 발견한 것이다. 해당회원은 회원테이블을 확인한 결과 해당 회원으로 예상되는 회원은 없었다... 아마도 전화번호 데이터 가공관련한 코드에서 오류로 인해 회원가입에 실패한것으로 예상된다.... ㅠㅠ
카카오에서는 전화번호와 더불어 'has_phone_number' 라는 값을 함께 리턴 해주고있었다.
필요하다고 생각되는 값들만 신경쓰고 리턴된 데이터를 자세히 확인하지 않은 내 불찰일지어다...
해당 키값을 확인하여 만약 전화번호 데이터가 없을시 해당 소셜계정으로는 가입할 수 없다는 안내문구를 주는 형태로 처리하였다.
심지어 네이버의 경우는 필수 값으로 설정하여도 " " 빈값으로 들어오기도 하였다...
3. 형식이 다를수가 있다...?
내 계정으로 테스트 한 경우 리턴된 전화번호의 형태를 확인했던 나는 당연히 +82 000-000-0000 의 형태로 모든 전화번호 데이터가 들어올줄 알았다. 그러나 그것은 오산이었다.... 몇몇 국가의 휴대전화번호 패턴의 경우 하이픈('-')이 없는 형태의 전화번호 형태였던 것이었다. 000 000 000 000 이런식으로 국가코드 3자리 이후 전화번호가 공백으로 띄워져있던 형태였다...
외부 API를 사용할 경우 위와 같은 상황은 언제든 발생할 수 있는 것 같다. 특별히 협의해서 인터페이스를 정의한 상황이 아니고 공개된 API를 사용하다보니 API 문서에 설명이 누락된 부분에 대해서는 실제 데이터를 통해서 확인해야하며, 적절한 유효성 검사를 추가하여 검증하는 자세를 가져야 겠다라는 생각이 들었다.
'Develop Trouble' 카테고리의 다른 글
| Stream 타입에 대한 이해 (0) | 2024.04.17 |
|---|---|
| Spring Request Body 는 한번만 읽어진다 (0) | 2024.04.17 |
| 스칼라 쿼리와 쿼리 최적화 경험 (0) | 2024.04.08 |
| Apache FTP Client 이용 시 속도 문제 (1) | 2024.03.29 |
| 테이블 컬럼 추가 후 Update 를 했는데 Insert 에러 메세지가? (1) | 2024.03.28 |