Erro de autenticação de conta

Título: n8n auto-hospedado + Gmail OAuth retorna Error: Unauthorized após callback do Google
Olá. Preciso de ajuda com uma instalação auto-hospedada de n8n porque estou tentando há vários dias conectar o Gmail via OAuth e não consigo completar a autorização.

Ambiente

  • n8n auto-hospedado em VPS HostGator
  • versão n8n: 2.35.3
  • Docker Compose
  • Traefik como proxy reverso
  • PostgreSQL
  • Redis
  • Domínio público: https://n8n.creativenfc.com
  • SSL/HTTPS funcionando
  • Gmail API habilitada no Google Cloud
  • OAuth Client tipo Web Application criado
  • Minha conta Gmail adicionada como Test User

Configuração pública do n8n

Atualmente tenho:

N8N_HOST=n8n.creativenfc.com
N8N_PROTOCOL=https
WEBHOOK_URL=https://n8n.creativenfc.com/
N8N_EDITOR_BASE_URL=https://n8n.creativenfc.com/
N8N_PROXY_HOPS=1

Originalmente N8N_PROTOCOL estava configurado como http, mas já mudei para https e recriei o contêiner.
Verifiquei dentro do contêiner:

docker exec n8n-main printenv N8N_PROTOCOL

e retorna:

https

Os contêineres estão funcionando corretamente:

  • n8n-main
  • n8n-main-worker
  • traefik
  • postgres
  • redis

Problema com Gmail OAuth

Crio uma credencial Gmail OAuth2 dentro do n8n e insiro corretamente:

  • Client ID
  • Client Secret
    Depois clico em:
    Connect my account
    O Google abre corretamente a autorização.
    Faço login com minha conta Gmail, aceito as permissões e o Google me redireciona corretamente para:
https://n8n.creativenfc.com/rest/oauth2-credential/callback

Mas nesse momento o n8n mostra:

Error: Unauthorized

Portanto, a credencial nunca obtém o access token.
Se tento usar o nó Gmail posteriormente aparece:

Unable to sign without access token

Outro dado que pode ser importante

Se entro no n8n diretamente por:

https://n8n.creativenfc.com

me aparece a tela de login do n8n.
Atualmente não lembro a senha interna do n8n e a recuperação por email não funciona porque SMTP não está configurado.
Porém, a partir do painel HostGator existe um acesso que me permite entrar diretamente no n8n e lá apareço autenticado como Owner.
Por isso suspeito que pode haver algum problema relacionado com a sessão/cookie de autenticação quando o Google volta ao callback do OAuth.

Google Safe Browsing

Também tive um aviso vermelho do Chrome sobre o subdomínio.
Registrei creativenfc.com no Google Search Console via DNS TXT.
O Search Console mostrou:

  • Deceptive pages
  • Possible phishing detected on user login
    Não forneceu Sample URLs.
    Já solicitei uma revisão porque n8n.creativenfc.com é uma instância privada e legítima do n8n.
    Não sei se isso está relacionado diretamente com OAuth ou se é um problema independente.

O que preciso saber

Alguém pode me indicar o que devo revisar especificamente para resolver o:

Error: Unauthorized

quando o Google volta para:

/rest/oauth2-credential/callback

?
Especialmente me interessa saber se poderia estar relacionado com:

  • o cookie/sessão n8n-auth;
  • Traefik ou headers do proxy reverso;
  • o fato de entrar no n8n a partir do painel do provedor;
  • alguma variável de ambiente adicional;
  • configuração de OAuth no n8n 2.x.
    Preferiria não reinstalar o n8n nem apagar workflows/configuração se existir uma forma de diagnosticar primeiro a causa concreta.
    Obrigado.

Descreva o problema/erro/pergunta

Qual é a mensagem de erro (se houver)?

Por favor, compartilhe seu workflow

(Selecione os nós em sua tela e use os atalhos de teclado CMD+C/CTRL+C e CMD+V/CTRL+V para copiar e colar o workflow.)

Compartilhe a saída retornada pelo último nó

Informações sobre sua configuração do n8n

  • versão n8n:
  • Banco de dados (padrão: SQLite):
  • Configuração EXECUTIONS_PROCESS do n8n (padrão: own, main):
  • Rodando n8n via (Docker, npm, n8n cloud, app desktop):
  • Sistema operacional:

Oi @Brandon_Gutierrez Bem-vindo!
O n8n 2.0 inverteu o padrão de N8N_SKIP_AUTH_ON_OAUTH_CALLBACK de true para false, então na versão 2.35.3 o endpoint de callback requer uma sessão n8n autenticada no mesmo navegador para o qual o Google redireciona. Acessar o editor através do painel HostGator em vez de fazer login no seu domínio não deixa um cookie n8n-auth em n8n.creativenfc.com, então req.user fica indefinido no callback e retorna um simples “Unauthorized” (Não autorizado) sem linha de log. Defina isso no container n8n-main e recrie-o:

N8N_SKIP_AUTH_ON_OAUTH_CALLBACK=true

Depois crie a credencial do Gmail novamente. Traefik, N8N_PROXY_HOPS e a flag Safe Browsing são separados disso.
Veja isso:

Oi, isso parece menos um problema de configuração do Gmail OAuth e mais uma questão de sessão/autenticação do n8n ocorrendo quando o Google retorna para o callback.

Eu diagnosticaria isso antes de mudar ou reinstalar qualquer coisa. As primeiras coisas que eu verificaria são o cookie n8n-auth na solicitação de callback, o comportamento do cookie SameSite/Secure, os cabeçalhos HTTPS encaminhados do Traefik e os logs do n8n durante a tentativa exata de OAuth.

Também testaria o fluxo acessando o n8n diretamente através de https://n8n.creativenfc.com em vez de acessar pelo painel de controle do HostGator, já que isso pode ser relevante para como a sessão é estabelecida.

Você poderia compartilhar:

  1. Os logs do n8n gerados durante uma tentativa falhada de OAuth (docker logs ao redor do callback)

  2. Sua configuração/labels do Traefik com segredos removidos

  3. Uma captura de tela da solicitação de rede do navegador para /rest/oauth2-credential/callback mostrando os cabeçalhos da solicitação/resposta (oculte cookies/tokens)

  4. Se o cookie n8n-auth está presente nessa solicitação de callback

Com isso, posso estreitar se a falha está vindo da sessão do navegador, proxy reverso, autenticação do n8n ou do tratamento do estado do OAuth em vez de apenas adivinhar.

Oi, às vezes compartilho do teu problema. Geralmente, as aplicações que você cria no Google têm data de vencimento por padrão. Tenta criar uma nova aplicação para resolver teu problema.

Tenho um problema semelhante com o OAuth via Azure.
Com a variável de ambiente N8N_SKIP_AUTH_ON_OAUTH_CALLBACK agora consigo estabelecer a conexão.

O cookie de autenticação n8n estava presente no meu caso, mas foi bloqueado conforme o console de desenvolvimento, pois SameSite estava definido como strict, mesmo tendo definido N8N_SAMESITE_COOKIE="lax" ou também "none".

O registro no log do n8n era simplesmente:
2026-09-03T06:08:29.911Z | error | OAuth2 callback failed {"error":{"name":"ResponseError","message":"Unauthorized","stack":"ResponseError: Unauthorized\n at OauthService.decodeCsrfState (/usr/local/lib/node_modules/n8n/src/oauth/oauth.service.ts:553:10)\n at OauthService.resolveCredential (/usr/local/lib/node_modules/n8n/src/oauth/oauth.service.ts:591:31)\n at OAuth2CredentialController.handleCallback (/usr/local/lib/node_modules/n8n/src/controllers/oauth/oauth2-credential.controller.ts:53:5)\n at handler (/usr/local/lib/node_modules/n8n/src/controller.registry.ts:116:12)\n at /usr/local/lib/node_modules/n8n/src/controller.registry.ts:126:8"},"file":"oauth2-credential.controller.js","function":"handleCallback"}