OAuth 2.0 intégré prend en charge le type de flux « Refresh Token »

J’essaie de connecter n8n à l’API de Zoho en utilisant OAuth 2.0 intégré

Après des essais et erreurs, on m’a signalé que n8n ne rafraîchit pas le jeton avec le type d’autorisation correct

« Nous avons vérifié le problème signalé avec notre équipe d’arrière-plan, et nos développeurs ont identifié que le problème se produit parce que le paramètre grant_type n’est pas défini sur refresh_token. »

Reférez-vous à cette spécification : OAuth 2.0 Refresh Token Grant Type

S’agit-il d’un problème de configuration ou d’un bug ? Ou n8n ne supporte-t-il pas le type d’autorisation de jeton de rafraîchissement ?

@taamtera, en attendant une réponse, voici quelques ressources qui pourraient t’aider :

Ressources suggérées

Automatiquement associées à ta question.

Documentation :

Forum :

@selbrae, @Gallo_AIA - vous avez déjà aidé sur des problèmes similaires, vous pouvez jeter un œil ?

Automatiquement suggéré par le bot communautaire de n8n. C’est un pilote - partage ton avis ici.

Bonjour @taamtera

Ceci est un comportement connu de la manière dont n8n gère OAuth2, mais il s’agit généralement d’un problème de configuration/configuration plutôt que d’un bug. n8n supporte le type de subvention refresh_token, mais l’API de Zoho est tristement célèbre pour être stricte quant au formatage de la demande d’actualisation (en exigeant spécifiquement que le grant_type soit dans le corps de la requête et non dans la chaîne de requête, et en exigeant des identifiants clients spécifiques).

Selon le bloc de credentials que vous utilisez, voici comment résoudre ce problème. Voyez ce qui s’applique :

  1. Si vous utilisez le nœud Zoho intégré, assurez-vous d’avoir sélectionné la bonne API Zoho (par exemple, Zoho CRM, Zoho Books) car elles ont des portées différentes.

  2. Si vous utilisez le nœud HTTP Request avec Generic OAuth2, configurez les credentials exactement comme suit :

  • Type de subvention : Authorization Code
  • URL d’autorisation : https://accounts.zoho.com/oauth/v2/auth
  • URL du jeton d’accès : https://accounts.zoho.com/oauth/v2/token
  • ID client : [Your Zoho Client ID]
  • Secret client : [Your Zoho Client Secret]
  • Portée : (Assurez-vous d’avoir les portées exactes requises, par exemple, ZohoCRM.modules.ALL)
  • Paramètres de requête URI d’authentification : Ajoutez access_type=offline et prompt=consent.
    • CRITIQUE : Sans access_type=offline, Zoho n’émettra pas de jeton d’actualisation, et n8n ne pourra pas actualiser la session, ce qui entraînera l’erreur que vous avez reçue.

Cela vous aide-t-il ?

Bonjour @taamtera
n8n prend en charge la subvention refresh_token, donc ce n’est pas une fonctionnalité manquante. Le point de terminaison de jeton de Zoho est l’exception : sa propre documentation répertorie grant_type, client_id, client_secret et refresh_token comme paramètres de chaîne de requête pour /oauth/v2/token et indique que le point de terminaison ne les accepte pas envoyés en tant qu’objet de corps, c’est pourquoi l’équipe de backend de Zoho ne voit aucun grant_type sur l’appel d’actualisation.
L’itinéraire fiable est d’arrêter de dépendre de l’actualisation automatique des informations d’identification et de l’exécuter vous-même. Obtenez le jeton d’actualisation une fois, stockez-le, puis actualisez avec un nœud Requête HTTP en effectuant une requête POST vers l’URL des comptes de votre centre de données avec les paramètres dans la chaîne de requête :

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

Utilisez le domaine des comptes du centre de données qui a émis le jeton (.eu, .in, .com.au, .ca), un jeton d’un centre de données ne s’actualisera pas par rapport à un autre.
Voir ceci :

n8n prend en charge la subvention refresh-token. Le client OAuth actuel construit le corps de la demande de jeton avec refresh_token et grant_type: refresh_token. Les identifiants Zoho intégrés utilisent le flux de code d’autorisation, demandent access_type=offline, envoient l’authentification du client dans le corps et exposent l’URL de jeton Zoho spécifique à la région.

N’essayez pas de sélectionner refresh_token comme Grant Type initial de l’identifiant. C’est l’étape d’actualisation au sein d’un identifiant de code d’autorisation, pas une option de configuration distincte.

Le détail manquant est votre version de n8n et le type exact d’identifiant. Si c’est l’identifiant Zoho intégré, confirmez que son URL de jeton d’accès correspond à votre centre de données Zoho. Reconnectez l’identifiant afin que n8n stocke un nouveau jeton d’actualisation hors ligne, puis réessayez.

Si Zoho enregistre toujours une demande de jeton sans grant_type sur la version actuelle de n8n, c’est un bogue reproductible. Incluez la version, le type d’identifiant, l’hôte du point de terminaison de jeton, ainsi qu’un journal de demande Zoho édité dans le rapport. N’incluez pas les jetons ou les secrets clients.

Source de demande d’actualisation de n8n : n8n/packages/@n8n/client-oauth2/src/client-oauth2-token.ts at master · n8n-io/n8n · GitHub

Source d’identifiant Zoho de n8n : n8n/packages/nodes-base/credentials/ZohoOAuth2Api.credentials.ts at master · n8n-io/n8n · GitHub