2026.11.13 찜질중 개발일기) 카카오 로그인 연동 준비: 키가 왜 이렇게 많을까?
01. 그냥 카카오로 로그인하면 되는 줄 알았다
찜질중의 로그인 기능을 고민하면서 가장 먼저 떠오른 건 카카오였다.
우리나라에서 익숙한 서비스이고, 별도의 아이디나 비밀번호를 만들 필요도 없으니까.
처음에는 그냥 '카카오 로그인' 버튼 하나만 붙이면 될 줄 알았다.
그런데 실제 연동에 필요한 설정을 살펴보니 생각보다 복잡했다.
REST API 키, JavaScript 키, 클라이언트 시크릿, 리다이렉트 URI.
분명 로그인 하나를 붙이려고 시작했는데 처음 보는 용어가 계속 나타났다.
평소 회사에서 로그인 기능을 기획할 때는 보통 사용자가 보는 화면과 흐름을 먼저 생각했다.
로그인 버튼을 누르고, 카카오에서 인증하고, 다시 서비스로 돌아오는 것.
사용자 입장에서는 아주 짧은 과정이다.
하지만 직접 만들어 보려니 그 짧은 과정 뒤에서 여러 서비스가 서로 정보를 주고받고 있다는 걸 조금씩 이해하게 됐다.
특히 어떤 키를 어디에 써야 하는지 구분하는 게 중요했다.
그냥 복사해서 붙여 넣으면 되는 문제가 아니었다. 공개해도 되는 정보와 절대 노출하면 안 되는 정보를 구별해야 했다.
개인 프로젝트라도 보안을 가볍게 생각할 수는 없었다.
02. 로그인하고 어디로 돌아올 것인가
카카오 로그인을 준비하면서 가장 헷갈리기 쉬운 부분이 리다이렉트 URI라고 생각했다.
처음에는 당연히 찜질중 주소를 입력하면 되는 줄 알았다.
그런데 Supabase Auth를 이용하는 구조라면 카카오에서 인증한 사용자가 먼저 Supabase의 인증 콜백 주소로 돌아오도록 설정해야 한다.
그리고 인증 처리가 끝난 다음에 사용자가 다시 찜질중으로 이동하는 흐름이다.
이걸 이해하고 나니 로그인 구조가 조금 더 선명해졌다.
사용자는 찜질중에서 버튼 하나를 누르지만, 실제로는 찜질중과 카카오, Supabase가 차례로 연결되는 것이다.
여기에 개발용 주소와 운영용 도메인까지 구분해야 한다.
아직 도메인 연결도 진행 중인 상황이라, 로그인 설정을 서둘러 붙이는 것보다는 먼저 주소 체계를 정리하는 게 낫겠다고 생각했다.
나중에 주소를 바꾸면서 인증 설정까지 다시 수정하는 일을 줄이고 싶었기 때문이다.
처음에는 로그인 버튼을 빨리 붙이는 게 목표였는데, 준비하다 보니 오히려 순서를 지키는 게 중요해졌다.
화면 하나를 완성하는 것보다, 그 화면이 어디와 연결되는지 이해하는 일이 먼저였다.
03. 꼭 필요한 정보만 받기
로그인을 기획하면서 또 하나 고민한 건 개인정보였다.
카카오 로그인을 붙이면 여러 정보를 받을 수 있다고 생각하기 쉽지만, 실제로는 어떤 정보가 필요한지부터 정해야 한다.
그런데 찜질중에서 꼭 알아야 하는 정보가 얼마나 될까?
사용자의 본명은 필요하지 않다.
생년월일이나 성별도 지금 기능에서는 필요하지 않다.
이메일 역시 단순히 찜질방을 돌아다니고 계란을 먹는 데는 필요하지 않다.
우선 필요한 건 사용자의 기록을 구분하고, 나중에 다시 접속했을 때 그 기록을 이어 줄 수 있는 최소한의 인증 정보다.
그래서 카카오 로그인도 처음부터 필수로 만들고 싶지는 않았다.
먼저 익명으로 들어와서 놀다가, 온기나 옷장 설정을 계속 보관하고 싶은 사람이 원할 때 계정을 연결하는 방식이 더 어울린다고 생각했다.
가입을 강요하지 않으면서도 기록을 남길 방법을 제공하는 것이다.
다만 실제 계정 연결 과정에서는 어떤 정보가 필요한지, 사용자에게 무엇을 안내해야 하는지 별도로 확인해야 한다.
이 부분은 단순히 화면 디자인으로 끝나는 문제가 아니었다.
오늘의 고찰
로그인 기능을 붙이려고 했을 뿐인데, 평소에는 지나치던 작은 과정들을 다시 보게 됐다.
사용자는 로그인 버튼을 누르고 몇 초 후 돌아오지만, 그 뒤에는 인증과 권한, 주소와 보안이 연결돼 있다.
그래서 오히려 처음부터 모든 사람에게 로그인하라고 하고 싶지는 않았다.
찜질중은 잠깐 쉬러 오는 공간이니까.
입장하는 데는 최대한 가볍게, 기록을 남기는 순간에는 충분히 안전하게.
다음 글에서는 이 생각을 바탕으로 회원가입 없이 시작하는 익명 계정 구조를 어떻게 설계하고 있는지 정리해 보려 한다.
▶ 찜질중 현재 접속 주소: https://eye215.github.io/jjimjiljung/