DOCS/troubleshooting/250918_gmail_token_slack_user_id_column_missing.md
Claude-51124 11d5c32100 refactor: Gmail 토큰 문서 날짜 및 파일명 변경
- 250825 → 250918 날짜 변경
- slack_id_migration → slack_user_id_column_missing
- 실제 문제를 반영한 파일명으로 변경
2025-09-18 18:19:32 +09:00

1.5 KiB

Gmail Token 시스템 Slack ID 마이그레이션

문제 상황 (2025-08-25)

  • UUID 불일치: auth-server uuid4() vs skill-email uuid5() → 토큰 조회 실패
  • DB 스키마 변경 시도했으나 미완성

실제 상태 (2025-09-18 확인)

코드 문제

# 현재 코드 (잘못됨)
cur.execute("""
    SELECT ... FROM gmail_tokens
    WHERE slack_user_id = %s  # 존재하지 않는 컬럼
""", (user_id,))

# 올바른 방법
cur.execute("""
    SELECT gt.* FROM gmail_token gt
    JOIN user u ON gt.user_id = u.id
    WHERE u.oauth_id = %s AND gt.is_equipped = true
""", (slack_id,))

DB 스키마 (실제)

CREATE TABLE gmail_token (
    id UUID PRIMARY KEY,
    user_id UUID NOT NULL,  -- user 테이블 FK
    token_data JSONB,  -- access_token, refresh_token 포함
    equipped_to VARCHAR(50),  -- Gmail 계정
    is_equipped BOOLEAN DEFAULT false
);
-- user.oauth_id에 Slack ID 저장됨

토큰 자동 갱신 (정상 작동)

if creds and creds.expired and creds.refresh_token:
    creds.refresh(Request())
    self.creds_provider.save_credentials(user_id, creds)

트러블슈팅

토큰 조회 실패

  • slack_user_id 컬럼 없음 → JOIN 사용 필요
  • is_equipped = true 확인

자동 갱신 실패

  • refresh_token 존재 여부
  • Google OAuth 설정 확인

관련 문서