구글 로그인이 에뮬레이터에서 처음 떴을 때 좀 우쭐했다는 얘기는 전에 한 번 했어요. SHA가 어쩌고 디버그가 어쩌고 하던 게 다 끝나고, 구글도 애플도 깔끔하게 됐으니 이제 로그인은 졸업이라고 생각했거든요. 그렇게 마음을 탁 놓고 앱을 플레이 마켓에 올렸어요. 로그인은 더 이상 제 걱정거리가 아니라고 믿으면서요.
문제는 한참 뒤에 터졌어요. 어느 날 제 안드로이드폰으로, 마켓에서 직접 받은 그 앱을 켜서 구글 로그인을 눌렀는데 — 안 되는 거예요. 분명히 제 컴퓨터에 연결한 폰에선 잘 됐는데요. 같은 코드, 같은 앱인데, 제가 빌드해서 깐 건 되고 마켓에서 받은 건 안 됐어요. 그 차이가 그땐 정말 말이 안 된다고 생각했어요.
분명히 어제까지 됐었는데
처음엔 제가 뭔가 건드려서 망가뜨린 줄 알았어요. 코드를 바꾼 것도 없는데 갑자기 안 되니까요. 폰을 다시 켜보고, 앱을 지웠다 다시 깔아보고, 구글 계정을 바꿔서도 눌러봤어요. 다 안 됐어요. 클로드한테 화면을 캡처해서 보여줬더니, 로그인을 누르는 순간 잠깐 떴다 사라지는 그 에러가 인증 쪽 문제 같다고 하더라고요.
그러다 한 가지가 걸렸어요. 제 컴퓨터에 폰을 꽂아서 직접 빌드해 깐 버전은 지금도 멀쩡히 된다는 거였어요. 마켓에서 받은 것만 안 됐어요. 그 둘이 같은 앱인데 뭐가 다른 건지, 그게 도무지 안 잡혔어요. 클로드한테 이 둘의 차이가 뭐냐고 물었더니, 그제야 '서명'이라는 단어가 나왔어요.
진짜 원인 — 제 키랑 플레이 키가 달랐어요
설명을 듣고도 한 번에 이해가 안 가서 한참 곱씹었어요. 정리하면 이런 거였어요.
앱은 폰에 깔릴 때 누가 만든 건지 확인하는 '지문' 같은 게 붙어요. 제가 컴퓨터에서 빌드할 땐 제 키, 그러니까 키스토어로 그 지문이 찍혀요. 그래서 Firebase에는 제 키의 지문을 등록해 뒀고, 그 덕에 제 컴퓨터에서 깐 건 구글이 등록된 앱으로 알아보고 로그인을 통과시켰던 거예요.
그런데 플레이 마켓은 제가 올린 앱을 그대로 내보내지 않고, 자기 키로 한 번 더 서명해서 사용자한테 줘요. 그러니까 마켓에서 받은 버전엔 제 키가 아니라 플레이의 앱 서명 키 지문이 찍혀 있는 거예요. 근데 그 지문은 제가 Firebase에 등록한 적이 없죠. 그래서 출시 버전에서만, 그것도 안드로이드에서만 구글 로그인이 막혔던 거예요. 애플은 이 구조가 아니라서 멀쩡했고요.
솔직히 왜 굳이 키를 둘로 나누는지, 그 원리까지는 지금도 또렷이는 모르겠어요. 다만 내가 올린 앱과 사용자가 받는 앱은 지문이 다르다는 사실 하나만 손에 쥐고 들어가니까 그제야 길이 보였어요.
그래서 어디를 고쳤냐면
순서 자체는 짧았어요. 근데 솔직히, 이 짧은 순서에서 제일 오래 걸린 건 그 첫 화면을 찾는 일이었어요. 예전이랑 Play Console 메뉴 위치가 바뀌어 있더라고요. 앱 서명이면 당연히 출시 관련 메뉴 어딘가에 있을 줄 알았는데, 엉뚱하게 'Google Play로 보호됨'이라는 메뉴 안에 들어가 있었어요. 보안 메뉴 안에 앱 서명이 있을 거라곤 생각도 못 했거든요. 클로드도 헷갈렸는지 자꾸 예전 경로를 알려줬고, 그 말대로 눌렀다가 그런 메뉴가 없어서 또 한참 헤맸어요. 결국 왼쪽 메뉴를 위에서부터 하나씩 눌러보다가 겨우 찾았어요.
찾고 나서 한 건 이게 다예요. Play Console에서 'Google Play로 보호됨' 안의 '앱 서명'으로 들어가면 앱 서명 키 인증서라는 게 있는데, 거기 SHA-1 지문을 복사해요. 제가 만든 업로드 키 말고 앱 서명 키 쪽이에요. 그걸 Firebase의 내 안드로이드 앱 설정에 지문으로 추가하고, google-services.json을 다시 받아서 프로젝트 파일을 갈아끼운 다음, 다시 빌드해서 올리면 끝이에요.

Play Console → Google Play로 보호됨 → 앱 서명. 여기 SHA-1 인증서 지문을 복사해서 Firebase에 등록하면 돼요. 실제 값은 가렸으니 복사하는 위치만 보면 돼요.
google-services.json을 다시 안 받아서 또 안 되던 적도 몇 번 있었어요. 지문만 등록하고 파일을 안 바꾸면, 앱은 여전히 옛날 정보를 들고 있어서 똑같이 막히더라고요. 그땐 또 이게 왜 안 되나 한참 들여다봤는데, 알고 보니 파일 하나를 안 갈아끼운 거였어요.
다음 앱부턴 이 자리부터 손댔어요
이 일도 풀리고 나서 클로드 코드가 알아서 보는 메모에 한 줄을 더했어요. 새 앱에 구글 로그인을 붙일 땐 처음부터 지문을 네 개, 디버그랑 릴리즈 각각 SHA-1이랑 SHA-256을 등록하고, 플레이에 올린 다음엔 앱 서명 키 SHA-1까지 하나 더 등록하라고요. 그 메모 덕에 두 번째 앱부턴 출시하고 폰으로 받아도 로그인이 한 번에 됐어요.
지금 돌아보면, 로그인이 코딩보다 더 큰 산이었다는 게 이런 데서 또 드러났던 것 같아요. 코드는 멀쩡한데, 코드 바깥의 지문 하나 때문에 출시된 앱이 막히는 거요. 그게 보이지도 않는 자리에 있어서 더 그랬어요.

