1.9 KiB
1.9 KiB
Gmail Token 조회 실패 - slack_user_id 컬럼 없음
현재 문제 (2025-09-18)
- 증상: Gmail 토큰 갱신 실패 → HTTP 500 에러
- 영향: 3개 계정 (0914eagle@gmail.com, goeun2dc@gmail.com, cdctfm@gmail.com)
- 원인: 코드가 존재하지 않는
slack_user_id컬럼 사용
실제 상태
코드 문제
# 현재 코드 (잘못됨)
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 설정 확인
해결 방법
수정 필요 파일
/home/admin/ivada_project/skill_email/services/db_credentials_provider.py
- 68번 줄: get_credentials()
- 170번 줄: save_credentials()
- 234번 줄: has_equipped_token()
수정 내용
# 기존 (잘못됨)
WHERE slack_user_id = %s
# 수정 (JOIN 사용)
FROM gmail_token gt
JOIN user u ON gt.user_id = u.id
WHERE u.oauth_id = %s