DOCS/troubleshooting/250909_happybell80_gmail_refresh_token_불일치.md
happybell80 e13057e6a7 Fix: Gmail token 불일치 문서 날짜 수정 및 현황 업데이트
- 파일명 250109 → 250909로 수정
- DB 현황 추가 (23:36 갱신 기준)
- 긴급 DB 동기화 SQL 우선순위 변경
2025-09-10 00:28:17 +09:00

1.5 KiB

Gmail refresh_token 컬럼/JSONB 불일치 문제

작성일: 2025-09-09
작성자: happybell80 & Claude
영향 서비스: skill-email, auth-server

문제 상황

Gmail 토큰 테이블에서 refresh_token이 두 곳에 저장:

  • refresh_token 컬럼 (오래된 무효 토큰)
  • token_data JSONB (실제 유효 토큰)

발견 과정

# refresh_token 컬럼 토큰 테스트
토큰: 1//0g53CfEfA9Pw6...
결과: 400 invalid_grant (만료/무효)

# token_data JSONB 토큰 테스트  
토큰: 1//0glv3xMaPHgvW...
결과: 200 OK (정상 작동)

DB 현황 (23:36 갱신)

김종태: token_data와 컬럼 불일치 (다른 토큰) Heejae: 양쪽 일치 (동일 토큰) HanYong: token_data 비어있음 (8/30 이후)

코드 분석

skill-email (문제)

  • 63번: refresh_token 컬럼 조회 → 무효 토큰 사용
  • 166번: 컬럼만 업데이트 → JSONB 동기화 안됨

auth-server (정상)

  • token_data JSONB 사용 중

해결 방안

-- 1. 긴급: DB 동기화 (무효 토큰 문제 즉시 해결)
UPDATE gmail_tokens
SET refresh_token = token_data->>'refresh_token',
    access_token = token_data->>'access_token'
WHERE token_data IS NOT NULL;

-- 2. 근본: skill-email 코드 JSONB 전환
-- 63번: token_data->>'refresh_token' as refresh_token
-- 166번: token_data = jsonb_set(...) 사용

교훈

  • 레거시 컬럼과 JSONB 병행 사용 시 동기화 필수
  • 코드 마이그레이션 시 모든 서비스 일괄 수정
  • 토큰 갱신 실패 시 저장 위치 불일치 확인