로그인 하나 붙이는데 이렇게 쫄릴 줄은 몰랐다. 맞다 난 쫄보다.
만들다 보니, 언젠가는 넘어야 할 고비가 하나 보였다. 로그인 기능이었다. 처음에는 아주 단순하게 시작했다. 아이디랑 비밀번호로 회원가입하고 로그인하는 방식이었다. 누가 누군지만 구분되면 됐기 때문에, 기능적으로는 그걸로 충분했다.
그런데 쓰다 보니 괜히 욕심이 생겼다. 대부분의 앱에는 카카오톡 로그인이 붙어 있는데, 내 웹앱에는 없다는 게 계속 눈에 밟혔다. 아직 별것도 아닌 웹앱이면서 이런 걸 신경 쓰는 게 웃기기도 했다. 그래도 이런 생각이 들었다. 기왕 만드는 거면, 나도 저런 걸 한 번 붙여보고 싶었다. 그냥 보기 좋게, 기깔나게 한 번 해보고 싶었다.
그래서 카카오톡 로그인을 붙이기로 마음먹었다. 편의성도 이유였지만, 솔직히 말하면 “나도 해봤다”는 경험이 더 끌렸다. 문제는 그때부터였다.
지금까지 해봤던 API 연동은 대부분 단순했다. 공공데이터를 받아와서 화면에 뿌리거나, GPT API처럼 요청 보내고 응답을 받는 정도였다. 그건 어떻게 보면 일방적인 통신에 가까웠다. 그런데 카카오톡 로그인은 느낌부터 달랐다. 서로 주고받아야 했고, 인증이라는 과정이 끼어 있었고, 뭔가 잘못되면 사용자 정보랑 바로 엮이는 것 같았다.
게다가 국내 기업, 그것도 완전한 사기업의 API를 직접 쓰는 건 처음이었다. 괜히 실수하면 안 될 것 같고, 내가 건드리면 안 되는 걸 건드리는 건 아닐지 쓸데없는 걱정도 들었다. 정확히 뭐가 무서운지는 모르겠는데, 그냥 쫄렸다.
일단 ‘발급부터’ 해야 했다. 카카오 개발자 페이지에 들어가서 애플리케이션을 만들고, 내 서비스 주소를 등록하고, 로그인에 쓸 설정들을 하나씩 켜야 했다. 그러고 나면 ‘키’가 나오는데, 그걸 들고 와서 내 코드에 붙여야 했다.
그리고 제일 헷갈렸던 게 ‘돌아오는 주소’였다. 카카오로 로그인했다가 다시 내 웹앱으로 돌아오려면, 카카오 쪽에도 “로그인 끝나면 여기로 돌려보내라”는 주소를 등록해놔야 했다. 그런데 그 주소는 내가 정하는 동시에, 카카오가 요구하는 형식도 맞춰야 했다. 주소가 한 글자라도 틀리면 그 자리에서 막혔다.
그 과정을 하면서 계속 이런 느낌이 들었다. 내가 지금 웹앱을 만드는 건지, 주소를 맞추는 퍼즐을 맞추는 건지 모르겠다.
문서를 봐도 한 번에 이해가 되지 않았다. 이 값은 어디서 오고, 이 토큰은 왜 필요한지, 이걸 어디에 저장해야 하는지도 헷갈렸다. 이쯤 되니 이런 생각도 들었다. 이 정도면 그냥 원래 만들었던 로그인 방식으로 돌아가도 되지 않나.
그래도 이상하게 거기서 멈추고 싶지는 않았다. 이걸 넘기지 않으면, 이건 끝까지 혼자 쓰는 물건으로 남을 것 같다는 생각이 들었다. 누군가와 같이 쓰는 웹앱이 되려면, 결국 이 단계는 지나가야 할 것 같았다.
그래서 또 AI를 붙잡고 하나씩 물어봤다. “카카오에서 뭘 설정해야 하는지”부터 “코드에서 어떤 흐름으로 붙는지”까지, 모르는 걸 모르는 대로 물어봤다. 다 이해하지는 못한 채로 진행한 부분도 분명 있다. 지금 다시 설명하라고 하면 솔직히 말 못 할 부분도 있다.
그래도 어쨌든 되긴 됐다. 로그인 버튼을 누르고, 카카오 계정으로 접속이 되고, 다시 내 화면으로 돌아오는 걸 봤을 때 묘한 기분이 들었다. 대단한 걸 해낸 느낌보다는, 아… 이 선은 넘겼구나 하는 느낌에 가까웠다.
그때 처음으로 실감했다. 이건 더 이상 장난처럼 만든 페이지는 아니구나. 마음만 먹으면 언제든 멈출 수는 있지만, 계속 가려면 점점 더 낯선 영역으로 들어가야 하는구나.
그리고 아마, 이때부터였을 거다. 이 프로젝트가 생각보다 오래 갈 수도 있겠다는 예감이 들었던 게.
+
덧붙이자면, 내가 실제로 했던 건 거창한 게 아니었다. 순서를 적어보면 이 정도였다.
첫째, 카카오 개발자 페이지에서 앱을 만들고 서비스 주소를 등록했다.
둘째, 카카오 로그인 설정을 켜고, “로그인하고 나서 돌아올 주소”를 등록했다.
셋째, 키를 받아서 내 웹앱에 붙였다.
넷째, 로그인 버튼을 누르면 카카오로 이동하고, 로그인 후 다시 내 웹앱으로 돌아오게 만들었다.
다섯째, 돌아온 뒤에는 사용자 정보를 받아서 내 서비스에서 쓸 형태로 저장했다.
이 순서를 글로 적으면 쉬워 보이는데, 실제로는 중간중간 계속 막혔다. 주소 하나가 틀렸다고 안 되고, 설정 하나를 안 켰다고 안 되고, 뭔가 하나만 삐끗하면 다시 처음으로 돌아가는 느낌이었다. 그래서 더 쫄렸고, 그래서 더 오래 걸렸다.