가이드

n8n Gmail 연동이 안 될 때 확인할 5가지

읽는 데 약 4분#n8n#자동화#트러블슈팅#Gmail

한줄 요약: n8n에서 Gmail 연결이 실패하는 원인의 대부분은 계정이나 권한이 아니라 콜백 주소 불일치입니다. 크리덴셜을 지우고 새로 만들기 전에 아래 5가지를 순서대로 확인하면 대개 2번 안에서 끝납니다. 마지막 5번은 커스텀 도메인을 쓰는 사람에게만 생기는 함정인데, 증상이 토큰 만료와 똑같아서 가장 오래 걸립니다.

먼저 알아야 할 것: 어디서 끊기는가

Gmail 노드가 동작하지 않을 때 화면에 뜨는 문구는 Unauthorized 한 줄뿐인 경우가 많습니다. 그래서 계정 문제로 보이고, 계정을 바꿔 보고, 크리덴셜을 지웠다 다시 만들게 됩니다. 그런데 실제로 끊기는 자리는 그보다 앞입니다.

n8n 자체가 처음이라면 n8n 첫 자동화 따라하기부터 보는 편이 빠릅니다. 그리고 이 글은 구글 계정으로 로그인하는 OAuth 연동 기준입니다. 로그인 버튼 없이 앱 비밀번호가 필요한 경우는 Gmail 앱 비밀번호 발급하기의 경계표에서 확인하세요.

연결되는 경우

  1. 1. n8n 구글 로그인 요청 돌아올 주소를 함께 보냅니다
  2. 2. 구글 등록된 주소와 대조 n8n이 보낸 주소 = 내가 등록한 주소
  3. 3. n8n 토큰 수신, 연결 완료 Account connected

대조 통과 → Gmail 노드가 동작합니다

끊기는 경우 (가장 흔한 사고)

  1. 1. n8n 구글 로그인 요청 실제로 보낸 주소: 플랫폼 기본 도메인
  2. 2. 구글 등록된 주소와 불일치 등록해 둔 주소: 내 커스텀 도메인
  3. 3. 브라우저 인증 중단 redirect_uri_mismatch 또는 Unauthorized

대조 실패 → 계정을 바꿔도, 크리덴셜을 새로 만들어도 같은 결과입니다

구글은 "n8n이 보낸 주소"와 "내가 등록한 주소"를 글자 단위로 대조합니다

확인 1. n8n이 실제로 보내는 콜백 주소를 먼저 본다

진단의 출발점은 내가 등록한 주소가 아니라 n8n이 보낸 주소입니다. 이 둘이 다를 수 있다는 것이 이 문제의 전부입니다.

n8n 크리덴셜 설정 화면 하단에 OAuth Redirect URL 필드가 있습니다. 여기 적힌 값이 n8n이 구글에 보내겠다고 표시하는 주소입니다.

n8n 크리덴셜 설정 화면. OAuth Redirect URL 필드에 도메인 뒤 rest/oauth2-credential/callback 경로가 표시되고, 그 아래 Client ID와 Client Secret 입력란이 있다
n8n 크리덴셜 화면의 OAuth Redirect URL. 형태는 항상 https://내도메인/rest/oauth2-credential/callback입니다 (출처: 필자의 n8n 한글 가이드북)

여기서 끝내지 말고 한 단계 더 확인하는 방법이 있습니다. 브라우저 개발자도구 네트워크 탭을 켜 둔 채로 Sign in with Google을 누르면, 구글로 나가는 요청에 redirect_uri 파라미터가 그대로 보입니다. 화면에 표시된 값과 실제로 나간 값이 다를 수 있기 때문에, 원인을 못 찾고 있다면 이 확인이 가장 빠릅니다.

확인 2. 승인된 리디렉션 URI에 그 주소가 글자 그대로 있는가

1번에서 확인한 주소를 Google Cloud Console에 등록합니다. 위치는 API 및 서비스 > 사용자 인증 정보 > 해당 OAuth 클라이언트 편집 > 승인된 리디렉션 URI입니다.

Google Cloud Console의 승인된 리디렉션 URI 설정 화면. URI 1 입력란에 도메인 뒤 rest/oauth2-credential/callback 경로가 등록돼 있고, 아래에 설정 반영에 5분에서 몇 시간이 걸릴 수 있다는 안내가 있다
실제 설정 화면. 도메인 부분은 가렸고 뒤쪽 경로 형태가 핵심입니다. 화면 아래 안내처럼 반영에 시간이 걸릴 수 있습니다
자주 어긋나는 지점 결과
끝의 슬래시 유무가 다름 불일치로 처리됩니다
httphttps가 다름 불일치로 처리됩니다
서브도메인이 다름 (www 유무 포함) 불일치로 처리됩니다
저장 직후 바로 시도 반영에 몇 분이 걸릴 수 있습니다

이 단계에서 나는 오류가 redirect_uri_mismatch입니다. 메시지가 이렇게 뜬다면 원인이 사실상 확정된 것이라 오히려 다행입니다.

확인 3. 클라이언트 ID와 시크릿이 같은 프로젝트의 것인가

invalid_client 오류는 클라이언트 ID나 시크릿이 잘못 들어갔을 때 납니다. 프로젝트를 여러 개 만들어 두고 다른 프로젝트의 값을 붙여 넣는 경우가 흔합니다.

오류 메시지 원인 확인할 것
invalid_client ID 또는 시크릿 불일치 값을 복사한 프로젝트와 API를 켠 프로젝트가 같은가
access_denied 권한 승인이 안 됨 동의 화면에서 요청한 scope가 설정돼 있는가
insufficient_scope 작업에 필요한 권한 부족 크리덴셜의 scope에 Gmail 항목이 있는가

확인 4. Gmail API를 켰는가, 테스트 사용자에 내 계정이 있는가

구글은 서비스별로 API를 따로 켜야 합니다. Sheets나 Drive를 쓰려고 만든 크리덴셜을 그대로 Gmail에 붙이면, 크리덴셜은 정상인데 Gmail만 실패합니다.

동의 화면이 테스트 모드라면 조건이 하나 더 붙습니다. 테스트 사용자 목록에 내 계정이 들어 있어야 하고, 이 모드에서 발급된 refresh token은 며칠 뒤 만료됩니다.

확인 5. 커스텀 도메인을 쓰는데 n8n이 기본 도메인으로 콜백하는가

여기가 가이드 문서에 잘 안 나오는 자리입니다. n8n을 직접 호스팅하면서 커스텀 도메인을 연결한 경우에만 생깁니다.

n8n은 콜백 주소를 브라우저 주소창이 아니라 서버 환경변수를 기준으로 만듭니다. 그래서 커스텀 도메인으로 접속하고 있어도, 환경변수가 플랫폼 기본 도메인으로 남아 있으면 콜백은 기본 도메인으로 나갑니다.

실제로 나간 주소:  https://xxxx.up.railway.app/rest/oauth2-credential/callback
구글에 등록한 주소: https://n8n.내도메인.com/rest/oauth2-credential/callback

해결은 둘 중 하나입니다.

  1. 호스팅 환경변수에 base URL을 커스텀 도메인으로 명시합니다. N8N_EDITOR_BASE_URLWEBHOOK_URL 두 개를 함께 맞춥니다.
  2. 아니면 구글 쪽 승인된 리디렉션 URI에 플랫폼 기본 도메인 주소도 추가합니다.

오류 메시지로 역추적하기

화면에 뜨는 것 가장 먼저 볼 것
redirect_uri_mismatch 확인 2
invalid_client 확인 3
access_denied, insufficient_scope 확인 3, 확인 4
Unauthorized 한 줄만 확인 1로 실제 나간 주소부터, 그다음 확인 4와 5

댓글

    핀번호는 내 댓글을 지울 때 필요합니다.

    뉴스레터

    새 글을 메일로 받아보세요

    AI 자동화 튜토리얼과 저자 코멘터리를 보냅니다. 스팸 없이, 새 글이 올라올 때만.

    구독하기 ›