PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → AuthIdentifie - Le client ID présente un /
AuthIdentifie - Le client ID présente un /
Débuté par ErRod, 30 avr. 2025 11:23 - 1 réponse
Membre enregistré
2 messages
Posté le 30 avril 2025 - 11:23
Bonjour,

Je cherche aujourd'hui à m'interfacer avec une API (Sage) via le protocole OAuth2.0

Il se trouve que le Client ID que me fournit Sage possède un / au milieu de la chaine
ex : a30eb717-3949-xxxx-6dc7-15bxxxxxx302/e98a7717-05ff-47eb-xxxx-751xxxx0645c

Quand j'appelle AuthIdentifie sans convertir le client ID au préalable, le / est conservé et forcément l'URL devient invalide.

Lorsque je converti manuellement le Client ID en remplaçant le / par %2F, le % est remplacé par %25 ce qui rend une nouvelle fois l'URL invalide.

J'ai essayé différents types d'encodage et rien ne fait, le client ID utilisé dans l'URL de la première requête n'est jamais au bon format.

J'ai comparé les URL entre Postman (ou cela fonctionne) et AuthIdentifie et le problème se situe uniquement sur ce caractère (l'URL de redirection est pourtant bien encodée via Windev).

Quelqu'un a t'il une astuce?

Merci,
Cordialement
ErRod
Membre enregistré
2 messages
Posté le 01 mai 2025 - 08:44
J'ai essayé aussi de ne pas ajouter le paramètre Client ID et de l'intégrer manuellement dans l'URL Auth

Voici mon code
OAuth2Params est un OAuth2Paramètres
sClientID est une chaîne = "a30eb717-3949-c303-xxxx-15b1cbcxxx02%2Fe98a7717-xxxx-47eb-91f0-751xxx40645c"

sClientSecret est une chaîne = "xxxxxxxxxxxxxx"

OAuth2Params.ClientSecret = sClientSecret
OAuth2Params.URLAuth = "https://www.sageone.com/oauth2/auth/central?filter=apiv3.1&client_id="+sClientID
OAuth2Params.URLToken = "https://oauth.accounting.sage.com/token"
OAuth2Params.TypeRéponse = ""

sTemp est une chaîne = URLEncode(URLEncode("http://localhost:9874/",encodeURLDepuisAnsi),encodeURLParamètre)
OAuth2Params.URLRedirection = sTemp

// Demande d'authentification : ouvre la fenêtre de login
MonToken est un AuthToken = AuthIdentifie(OAuth2Params)


De cette manière le client ID apparaît bien au bon format mais cette fois Windev ajoute les autres paramètres de l'URL en commençant par un ? ce qui rend une nouvelle fois l'URL invalide.
Et certains paramètres comme le response_type et le state sont ajoutés automatiquement (même en les positionnant à vide dans l'objet OAuthparamètres).

La fonction AuthIdentifie me semble quelque peu inflexible, ca fonctionne bien avec certaines API mais dés qu'il y a une variation minime, on ne peut contourner les automatismes parfois incohérents de Windev.

Si quelqu'un a trouver un moyen de contourner ces problématiques je suis preneur,
sans quoi je vais devoir procéder manuellement et dire à mon client qu'il devra lui même hoster une page Web de redirection.

Merci,