OAuth 2.0 integrado suporta tipo de concessão „Refresh Token

Estou tentando conectar o n8n à API do Zoho usando OAuth 2.0 integrado

Depois de várias tentativas, recebi uma resposta informando que o n8n não atualiza o token com o tipo de concessão correto

“Verificamos o problema relatado com nosso time de backend, e nossos desenvolvedores identificaram que o problema está ocorrendo porque o parâmetro grant_type não está definido como refresh_token.”

Consulte esta especificação: OAuth 2.0 Refresh Token Grant Type

Isso é um problema de configuração ou um bug? Ou o n8n não oferece suporte ao tipo de concessão refresh token?

Oi @taamtera, enquanto você aguarda uma resposta, aqui estão algumas coisas que podem ajudar:

Recursos sugeridos

Correspondência automática com sua pergunta.

Documentação:

Fórum:

@selbrae, @Gallo_AIA - vocês já ajudaram em problemas semelhantes antes, podem dar uma olhada?

Sugerido automaticamente pelo bot da comunidade n8n. É um piloto - compartilhe seus comentários aqui.

Oi @taamtera

Este é um comportamento conhecido de como o n8n lida com OAuth2, mas é tipicamente um problema de configuração/setup em vez de um bug. O n8n sim suporta o tipo de concessão refresh_token, mas a API do Zoho é notoriamente rigorosa quanto ao formato da solicitação de atualização (especificamente exigindo que grant_type esteja no corpo da solicitação e não na string de consulta, e exigindo credenciais de cliente específicas).

Dependendo de qual bloco de credencial você está usando, aqui está como resolver isso. Veja qual se aplica:

  1. Se você está usando o nó Zoho integrado, certifique-se de ter selecionado a API Zoho correta (por exemplo, Zoho CRM, Zoho Books) pois elas têm escopos diferentes.

  2. Se você está usando o nó HTTP Request com Generic OAuth2, configure a credencial exatamente como segue:

  • Grant Type: Authorization Code
  • Authorization URL: https://accounts.zoho.com/oauth/v2/auth
  • Access Token URL: https://accounts.zoho.com/oauth/v2/token
  • Client ID: [Seu ID de Cliente Zoho]
  • Client Secret: [Seu Segredo de Cliente Zoho]
  • Scope: (Certifique-se de ter os escopos exatos necessários, por exemplo, ZohoCRM.modules.ALL)
  • Auth URI Query Parameters: Adicione access_type=offline e prompt=consent.
    • CRÍTICO: Sem access_type=offline, o Zoho não emitirá um token de atualização, e o n8n falhará ao atualizar a sessão, levando ao erro que você recebeu.

Isso ajuda?

Oi @taamtera
n8n oferece suporte ao grant refresh_token, portanto isso não é um recurso ausente. O endpoint de token do Zoho é a exceção: sua própria documentação lista grant_type, client_id, client_secret e refresh_token como parâmetros de string de consulta para /oauth/v2/token e afirma que o endpoint não os aceita enviados como um objeto de corpo, razão pela qual a equipe de backend do Zoho não vê grant_type na chamada de atualização.
A rota confiável é parar de depender da atualização automática da credencial e executá-la você mesmo. Obtenha o refresh token uma vez, armazene-o e atualize com um nó HTTP Request fazendo POST para a URL de contas do seu data center com os parâmetros na string de consulta:

https://accounts.zoho.com/oauth/v2/token?grant_type=refresh_token&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&refresh_token=YOUR_REFRESH_TOKEN

Use o domínio de contas do DC que emitiu o token (.eu, .in, .com.au, .ca), um token de um DC não será atualizado em relação a outro.
Veja isto:

O n8n suporta o grant de refresh-token. O cliente OAuth atual constrói o corpo da solicitação de token com refresh_token e grant_type: refresh_token. A credencial Zoho integrada usa o fluxo de código de autorização, solicita access_type=offline, envia autenticação do cliente no corpo e expõe a URL de token Zoho específica da região.

Não tente selecionar refresh_token como o Grant Type inicial da credencial. É a etapa de atualização dentro de uma credencial de código de autorização, não uma opção de configuração separada.

O detalhe ausente é sua versão do n8n e tipo de credencial exato. Se esta for a credencial Zoho integrada, confirme se sua Access Token URL corresponde ao seu data center Zoho. Reconecte a credencial para que o n8n armazene um novo refresh token offline, depois tente novamente.

Se o Zoho ainda registrar uma solicitação de token sem grant_type na versão atual do n8n, isso é um bug reproduzível. Inclua a versão, tipo de credencial, host do endpoint de token e um log de solicitação Zoho editado no relatório. Não inclua tokens ou segredos do cliente.

Fonte da solicitação de atualização do n8n: n8n/packages/@n8n/client-oauth2/src/client-oauth2-token.ts at master · n8n-io/n8n · GitHub

Fonte da credencial Zoho do n8n: n8n/packages/nodes-base/credentials/ZohoOAuth2Api.credentials.ts at master · n8n-io/n8n · GitHub