APPCHOBO
SYSTEM BOOTING...
v0.1.bit · firebase build · 富士 ed.
LV14
HP87/100
MP42/80
EXP2,840
1,240 G
앱초보의 모험
◀ 일지목록
[치유주문]#카카오로그인#IAM#새벽

카카오 로그인 사흘째 새벽, 모니터 앞에 멍하니 앉아 있었어요

2026.05.31by addwisdom+108 EXP

구글이 풀렸을 때 사실 좀 우쭐했어요. SHA가 어쩌고 디버그가 어쩌고 하던 게 다 끝나고, 안드로이드 에뮬레이터에서 구글 버튼을 누르니까 진짜로 계정 선택창이 떴거든요. 다음 날 밤엔 애플까지 정리됐어요. 엔타이틀먼트랑 캐퍼빌리티 세 군데를 같이 맞춰주니까 그제야 아이폰 시뮬레이터에서 애플 버튼이 살아났고요. 두 개를 이틀 안에 다 풀었으니 마지막 카카오 하나는 금방 끝나겠지 했어요. 그게 사흘 동안 저녁을 통째로 가져간 일의 시작이었어요.

세 개 중에 카카오가 제일 익숙한 이름이라서 더 그랬어요. 사실 첫 앱의 진짜 장벽이 코딩이 아니라 로그인이었다는 걸 그때 이미 뼈저리게 느끼고 있던 참이었어요. 한국에서 카카오 로그인 안 쓰는 앱이 거의 없으니까 안내문도 잘 돼 있을 거고 클로드 코드한테 시키면 한 번에 끝나겠지 싶었거든요. 막상 들어가 보니 정반대였어요. 구글이랑 애플은 그래도 사흘 안에 둘 다 정리가 됐는데, 카카오는 매일 밤 새로운 단어가 하나씩 등장하는 식이었어요.

같은 답을 두 번 받고 두 번 다 안 됐던 첫날

첫째 날 저녁은 카카오 디벨로퍼스 사이트에서 시작했어요. 앱 등록하고, 네이티브 앱 키 받고, 안드로이드 패키지 이름 적고, 키 해시라는 걸 또 만들어서 넣고. 화면을 한 번씩 넘길 때마다 새 칸이 나왔지만 거기까진 따라갈 만했어요. 클로드 코드한테 카카오 로그인 붙여 줘 하고 시키니까 어느 파일을 새로 만들고, 어느 함수에 한 줄을 추가하고, 자기가 알아서 다 해주는 거예요. 빌드까지 통과됐어요. 에뮬레이터에서 카카오 버튼을 눌렀어요.

화면이 한 번 깜빡하고 INTERNAL이라는 짧은 한 줄이 떴어요. 끝이었어요. 그 한 줄 가지고 뭘 어디서부터 봐야 하는지가 전혀 안 잡혔어요. 구글은 그래도 SHA를 확인해 보라는 길잡이가 있었고, 애플도 캐퍼빌리티 화면이라는 정해진 자리가 있었는데, 카카오 INTERNAL은 정말 그냥 INTERNAL이었어요. 클로드한테 화면을 캡처해서 보여줬더니 답이 길게 왔어요. 키 해시를 다시 확인해 보고, 카카오 콘솔의 어떤 설정을 켜고, 어떤 토큰을 다시 발급받으라는 흐름이었어요. 그대로 다 해봤어요. 또 INTERNAL이었어요.

같은 증상을 다시 보여주니까 이번엔 살짝 다른 답이 왔어요. 비슷한 방향인데 단계가 조금 바뀌어 있었어요. 또 그대로 따라했어요. 또 INTERNAL. 그쯤에서 시계를 봤더니 새벽 한 시가 넘어 있었어요. 다음 날 출근해야 해서 노트북을 일단 덮었는데, 잠들기 전까지 그 단어 한 줄이 머릿속에서 계속 떠다녔어요. 구글이랑 애플이 그렇게 깔끔하게 풀렸으니 카카오도 그럴 줄 알았는데, 같은 방향으로 두 번을 시켰는데 똑같이 안 되는 게 그날 밤이 처음이었어요.

다음 날 출근길에 가만히 생각해 봤어요. 클로드 코드가 답을 주는 방식이 그동안 어땠는지를요. 막혔던 거 하나하나는 결국 풀어줬는데, 그게 항상 한 번에 풀린 건 아니었거든요. 한 번 시키면 일단 가장 흔한 답을 주고, 그걸 또 안 된다고 다시 보여주면 그제야 두 번째 가능성을 짚어주는 식이 많았어요. 이번 카카오는 그 두 번째도 안 통하는 자리에 와 있는 것 같았어요.

둘째 날 저녁엔 좀 다르게 가보기로 했어요. INTERNAL이라는 단어 자체를 가지고 검색을 했거든요. 한국어로도 쳐보고 영어로도 쳐보고. 비슷한 증상을 호소하는 글들이 몇 개 보였어요. 그 사이에서 처음으로 IAM이라는 단어가 나왔어요. 누군가 자기 글에서 IAM 권한이 비어 있어서 그랬다고 한 줄 적어둔 거였어요. 그게 첫 만남이었어요.

다시 클로드한테 가서 IAM이 뭐냐고 물었어요. 답이 길게 왔어요. 한참 읽었는데도 솔직히 한 번에 머리에 안 들어왔어요. GCP의 어떤 영역이고, 서비스 계정이라는 게 있고, 거기에 토큰 생성 권한을 부여해야 한다는 흐름이었어요. 화면 어디로 들어가서 무슨 항목을 누르라는 안내까지 같이 왔는데, 거기 적힌 주소대로 들어가니까 영문으로 된 표가 줄줄이 떴어요. 처음 보는 화면이었어요. 어느 줄을 클릭해야 하는지, 어느 칸에 뭘 적어야 하는지가 한 번에 안 보였어요.

이쯤에서 어떤 이름이 하나 등장해요. 무슨무슨 골뱅이 어쩌고 어쩌고 닷 컴 하는, 사람 이름이라고 하기엔 너무 긴 메일 주소 같은 이름이요. 클로드가 이게 서비스 계정이라고 알려주는데, 그게 누구이고 왜 갑자기 등장하는지가 한참 머리에 안 들어왔어요. 회원 가입한 적도 없는 어떤 계정이 제 프로젝트 어딘가에 이미 살고 있고, 그 계정한테 권한이 어쩌고 한다는 그림이 그려지지가 않았거든요. 우리 프로젝트가 만들어질 때 자동으로 같이 생긴 그림자 같은 거라는 식의 설명을 받았는데, 그 비유까지는 그런가 보다 하고 받아들였어요.

자세한 원리는 그때도 잘 모르고 솔직히 지금도 그렇게 또렷이는 모르겠어요. 다만 그 계정한테 토큰을 만들 수 있는 권한을 주는 줄을 한 줄 추가해야 카카오 로그인이 동작한다는 결론만 손에 잡고 들어갔어요. 클로드가 알려준 그 화면을 어찌어찌 찾아가서 새 줄을 추가하고, 권한 이름을 골라 넣고, 저장을 눌렀어요. 다시 에뮬레이터로 돌아와서 카카오 버튼을 눌렀어요. INTERNAL이었어요. 정확히 같은 자리에서, 정확히 같은 단어로요.

그날도 시계가 한 시를 넘어 있었어요. 그 시점에 든 생각이 좀 답답했어요. 안 풀리는 게 답답한 게 아니라, 안 풀리는 이유를 짐작조차 못 하고 있다는 게 답답했어요. 구글은 SHA 한 줄 더 넣으면 됐는데, 카카오는 매번 다른 자리를 짚어주고 매번 안 됐어요. 둘째 날 새벽에 노트북을 덮으면서 내가 클로드한테 묻는 방식이 잘못된 건가 하는 생각이 처음으로 들었어요. 그게 셋째 날의 시도로 이어졌어요.

셋째 날 새벽, 문서를 통째로 던지기로 했어요

셋째 날은 회사에서도 INTERNAL 단어가 머릿속에서 계속 돌아다녔어요. 점심 먹고 자판기 앞에서 커피 뽑으면서 카카오 로그인 화면을 머릿속에서 한 번 더 돌려보고, 퇴근하는 지하철 안에서 또 돌려보고. 그때 한 가지 생각이 떠올랐어요. 그동안 저는 클로드한테 어떻게 풀어 달라고만 시키고 있었지, 카카오 본인이 이걸 어떻게 설명하고 있는지는 한 번도 같이 보여준 적이 없었구나 하는 거였어요.

집에 와서 저녁 먹고 다시 책상에 앉았어요. 카카오 디벨로퍼스에는 안드로이드 로그인 가이드라는 페이지가 있어요. 한국어로 정리된 글이 여러 장 이어져 있는데, 거기엔 키 해시 만드는 법부터 권한 설정까지 단계별로 적혀 있어요. 그 페이지를 그냥 화면에서 통째로 긁어서, 새 대화창 하나에 처음부터 붙여 넣었어요. 한 페이지가 아니라 그 흐름에 걸리는 페이지들을 다요. 그러고 한 줄을 적었어요. 이걸 같이 처음부터 보면서 풀어보자고요.

그러면 답이 길어지는 방식이 좀 달라져요. 처음 두 날은 짧게 묻고 짧게 답받는 식이었는데, 이번엔 클로드가 문서를 한 단락씩 짚어가면서 정리하기 시작했어요. 이 페이지에선 이런 권한이 필요하다고 적혀 있고, 그 권한이 콘솔의 어느 자리에 들어가 있어야 하는데, 지금 우리는 그 자리에서 이런 항목이 비어 있을 가능성이 높다는 식이었어요. 답이 와도 빨리 따라하지 않고 한 번 더 같이 보자고 시켰어요. 그러고 나서야 IAM에 들어가는 그 권한 이름이 처음에 받았던 것과 살짝 다른 자리에 있어야 한다는 걸 짚어 줬어요.

화면을 따라가면서 한 줄을 다시 잡았어요. 저장을 누르고 잠시 기다린 다음 다시 시도해 보라길래 그대로 했고요. 에뮬레이터로 돌아와서 카카오 버튼을 한 번 더 눌렀어요. 화면이 한 번 깜빡하더니 카카오톡 앱으로 휙 넘어갔어요. 그 순간이 좀 비현실적이었어요. 사흘 동안 INTERNAL만 떴던 자리가 이번엔 카톡으로 자연스럽게 넘어간 거예요. 카카오톡 화면에서 이 앱에 로그인할까요 한 줄이 떴고, 동의 버튼을 누르니까 다시 제 기도모임 앱으로 돌아왔어요. 로그인된 상태로요.

그 자리에서 한참 그냥 앉아 있었어요. 시계를 봤더니 새벽 두 시가 좀 넘어 있었고, 거실엔 스탠드 하나만 켜져 있고, 식구들 자는 방 쪽에서는 아무 소리도 안 났어요. 처음엔 됐다는 말도 안 떠올랐어요. 그냥 카카오 버튼이 눌리고, 카톡으로 넘어가고, 다시 제 앱으로 돌아오는 그 짧은 흐름이 화면에서 반복 재생되는 걸 보고 있었어요. 의자에 등을 기대고 한 번 길게 숨을 쉬었던 게 기억나요. 기쁘다기보다 좀 비어 있는 기분에 가까웠어요. 사흘 동안 가지고 있던 무거운 짐이 갑자기 사라진 자리에 그날따라 거실이 더 조용했어요.

옆에 식어 있던 커피잔을 한 모금 마시고 다시 카카오 버튼을 한 번 더 눌러봤어요. 또 됐어요. 한 번 더 눌러봤어요. 또 됐어요. 그제야 진짜로 풀렸다는 게 손에 잡혔어요. 머릿속으로는 내일 출근해야 하니까 자야지 하는 말이 떴는데, 손이 잘 안 움직였어요. 그 새벽 책상 앞에서 한 십오 분쯤 그냥 가만히 있었던 것 같아요.

다음 날 아침에 출근 준비를 하면서 머릿속에 떠 있던 건 한 가지였어요. 어제 새벽에 풀린 그 길을 그대로 적어 두지 않으면 다음 앱에서 또 사흘이 갈 거다. 출근 전에 노트북을 한 번 더 열고, 클로드 코드가 알아서 보는 글로벌 메모리 파일에 한 단락을 추가했어요. 카카오에서 INTERNAL 에러를 만나면 어느 자리부터 봐야 하는지, IAM 안의 어느 항목이 비어 있을 가능성이 높은지, 권한 이름은 정확히 뭘로 골라야 하는지. 한 줄짜리 메모가 아니라, 어제 새벽에 클로드랑 같이 짚어 내려온 그 흐름을 가능한 한 그대로 옮겨 적었어요. 잘 모르는 단어들이 그 안에 그대로 들어가 있어요. 서비스 계정이라든가, 토큰 생성자라든가, 정확한 원리까지는 지금도 또렷이 모르는 그 단어들이요.

그 메모가 두 번째 앱부터 진짜로 일을 했어요. 두 번째 앱에서 카카오를 붙이려고 하니까, 클로드가 처음부터 지난번 적어 두신 메모대로 IAM 항목부터 같이 보자고 시작하는 거예요. INTERNAL 에러를 만나기도 전에 그 자리부터 손을 댔어요. 사흘이 들어가던 자리가 한두 시간으로 줄었고, 세 번째 앱부턴 거의 한 번에 풀렸어요. 그 사흘이 아깝지 않다는 말은 못 하겠는데, 그 사흘이 한 번으로 끝났다는 사실은 지금도 위안이에요.

지금도 카카오 콘솔이나 GCP 콘솔을 열 때마다 그 사흘째 새벽이 한 번씩 떠올라요. 카톡으로 휙 넘어갔다가 다시 제 앱으로 돌아오던 그 짧은 장면이요. 코드 한 줄로 풀린 게 아니라, 어디 보이지도 않는 콘솔의 표 한 줄을 추가해 두는 일로 사흘이 끝났다는 사실이 그때도 좀 어이없었고 지금도 그래요.

▼ SPONSORED ▼
본문 하단 광고 슬롯
★ STAGE CLEAR ★
모험가는 +108 EXP 경험치를 획득했다!

✎ 방명록 0

불러오는 중…

  • 방명록을 펼치는 중…