PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Pb liason http avec l'api d'ebp
Pb liason http avec l'api d'ebp
Débuté par Christophe, 23 juin 2025 11:43 - 4 réponses
Posté le 23 juin 2025 - 11:43
Bonjour à tous

C'est mon premier post sur ce forum pour un problème de développement je suis en développeur pour une société de service informatique qui veut mettre en place une liaison avec la version SAAS d' EBP.
Je vous explique mon problème je génère une première connexion qui me permet d'avoir un refresh token et je suis censé utilisé ce dernier pour générer un nouveau token et un nouveau refresh token toute les heures.
Jusque là rien de compliqué j'ai testé la requète sur postman pas de problème j'arrive à avoir mon nouveau token et non nouveau refresh token par contre depuis windev en ayant les mêmes paramêtre je prend une erreur 400 invalid client
je vous met les deux codes et je suis ouvert aux pistes si vous en avez.
Merci d'avance

Code windev :
requeteenvoitoken est une httpRequête
reponseenvoitoken est une httpRéponse
demandetokenebp est une Structure

client_id est une chaîne
client_secret est une chaîne
grant_type est une chaîne
refresh_token est une chaîne
FIN
montoken est un demandetokenebp

requeteenvoitoken.URL ="https://api-login.ebp.com/connect/token"
requeteenvoitoken.Entête["authorization"]="bearer token"
requeteenvoitoken.Entête["token"]=""
requeteenvoitoken.Méthode=httpPost
requeteenvoitoken.ContentType="application/x-www-form-urlencoded"
montoken.client_id="jupiterwithoutpkce"
montoken.client_secret="78f68eac-c4e2-4221-9836-d66db48a75f0"
montoken.grant_type="refresh_token"
montoken.refresh_token="U6jem9IEViYBQZxNlq3TkFBgcwS7QVfTN3pBHcro63w"

requeteenvoitoken.Contenu=VariantVersJSON(montoken)
reponseenvoitoken=HTTPEnvoie(requeteenvoitoken)
Membre enregistré
2 255 messages
Posté le 23 juin 2025 - 17:01
Bonjour,

Pour insérer du code WinDev, utilisez le bouton ad hoc :)

Vous avez oublié d'insérer le code utilisé avec Postman... :D

ContentType -> Content-Type ?

motoken est un variant (oubliez la structure) ?
cf. https://doc.pcsoft.fr/fr-FR/index.awp?1000021051

NB : j'ai répondu car personne ne l'a encore fait mais je ne suis pas un spécialiste du sujet...

--
Bon dev,
Jean-Pierre
Message modifié, 23 juin 2025 - 17:23
Posté le 26 juin 2025 - 17:01
Jean-Pierre BLOCH a écrit :
Bonjour,

Pour insérer du code WinDev, utilisez le bouton ad hoc :)

Vous avez oublié d'insérer le code utilisé avec Postman... :D

ContentType -> Content-Type ?

motoken est un variant (oubliez la structure) ?
cf. https://doc.pcsoft.fr/fr-FR/index.awp?1000021051

NB : j'ai répondu car personne ne l'a encore fait mais je ne suis pas un spécialiste du sujet...

--
Bon dev,
Jean-Pierre

Merci pour ta réponse je met mon code la structure y etait mais en effet ça sera plus clair
Le content type est l'encodage de la requête http c'est l'encodage par défaut de windev et j'ai le même résultat avec ou sans.
{
"info": {
"_postman_id": "5f159fa0-e7bd-4d42-a540-71553350e6a2",
"name": "New Collection",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "46007417",
"_collection_link": "https://test88-9703.postman.co/workspace/test-Workspace~6e02e0a3-c2f9-42c3-8d38-53d967b97c3e/collection/46007417-5f159fa0-e7bd-4d42-a540-71553350e6a2?action=share&source=collection_link&creator=46007417"
},
"item": [
{
"name": "https://api-login.ebp.com/connect/token",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/x-www-form-urlencoded",
"type": "text"
}
],
"body": {
"mode": "urlencoded",
"urlencoded": [
{
"key": "client_id",
"value": "jupiterwithoutpkce",
"type": "text"
},
{
"key": "client_secret",
"value": "78f68eac-c4e2-4221-9836-d66db48a75f0",
"type": "text"
},
{
"key": "grant_type",
"value": "refresh_token",
"type": "text"
},
{
"key": "refresh_token",
"value": "Fc_dNjP78ImvCrQ3brwF3dvWUMYjHcsTB7tHsMP4Wss",
"type": "text"
}
]
},
"url": {
"raw": "https://api-login.ebp.com/connect/token",
"protocol": "https",
"host": [
"api-login",
"ebp",
"com"
],
"path": [
"connect",
"token"
],
"query": [
{
"key": "client_id",
"value": "jupiterwithoutpkce",
"disabled": true
},
{
"key": "client_secret",
"value": "78f68eac-c4e2-4221-9836-d66db48a75f0",
"disabled": true
},
{
"key": "redirect_uri",
"value": "https://localhost:3333/api/login/SigninRedirect",
"disabled": true
},
{
"key": "response_type",
"value": "code",
"disabled": true
},
{
"key": "scope",
"value": "openid%20profile%20offline_access",
"disabled": true
},
{
"key": "state",
"value": "4e2a15864f564bd19375999c394baa01",
"disabled": true
}
]
}
},
"response": []
}
]
}

Token est une chaîne
//Refrestoken est une chaine

requeteenvoitoken est une httpRequête
reponseenvoitoken est une httpRéponse
demandetokenebp est une structure

client_id est une chaîne
client_secret est une chaîne
grant_type est une chaîne
refresh_token est une chaîne
FIN
montoken est un demandetokenebp

requeteenvoitoken.URL ="https://api-login.ebp.com/connect/token"
//requeteenvoitoken.Entête["authorization"]="bearer"
requeteenvoitoken.Méthode=httpPost
//requeteenvoitoken.ContentType= "application/x-www-form-urlencoded"
montoken.client_id="jupiterwithoutpkce"
montoken.client_secret="78f68eac-c4e2-4221-9836-d66db48a75f0"
montoken.grant_type="refresh_token"
montoken.refresh_token="LnNbg8cfD9hOiKvO6iUf-K6xbXa3UQvWov16X9ZJZGM"

requeteenvoitoken.Contenu=VariantVersJSON(montoken)
reponseenvoitoken=HTTPEnvoie(requeteenvoitoken)

SI reponseenvoitoken.CodeEtat=200 ALORS


FIN
Membre enregistré
487 messages
Posté le 27 juin 2025 - 17:33
Bonjour,

Votre spécification JSON, que vous pouvez importer dans Postman pour vérifier, demande un formulaire HTTP, et non pas du JSON. La bonne piste serait plutôt :
requeteenvoitoken est une httpRequête
reponseenvoitoken est une httpRéponse

requeteenvoitoken.URL ="https://api-login.ebp.com/connect/token"
requeteenvoitoken.Méthode=httpPost
requeteenvoitoken.ContentType = "application/x-www-form-urlencoded"

HTTPCréeFormulaire("token")
HTTPAjouteParamètre("client_id","jupiterwithoutpkce")
HTTPAjouteParamètre("client_secret","78f68eac-c4e2-4221-9836-d66db48a75f0")
HTTPAjouteParamètre("grant_type","refresh_token")
HTTPAjouteParamètre("refresh_token","LnNbg8cfD9hOiKvO6iUf-K6xbXa3UQvWov16X9ZJZGM")

reponseenvoitoken=HTTPEnvoie("token", requeteenvoitoken)
Posté le 02 juillet 2025 - 10:50
bchanudet a écrit :
Bonjour,

Votre spécification JSON, que vous pouvez importer dans Postman pour vérifier, demande un formulaire HTTP, et non pas du JSON. La bonne piste serait plutôt :
requeteenvoitoken est une httpRequête
reponseenvoitoken est une httpRéponse

requeteenvoitoken.URL ="https://api-login.ebp.com/connect/token"
requeteenvoitoken.Méthode=httpPost
requeteenvoitoken.ContentType = "application/x-www-form-urlencoded"

HTTPCréeFormulaire("token")
HTTPAjouteParamètre("client_id","jupiterwithoutpkce")
HTTPAjouteParamètre("client_secret","78f68eac-c4e2-4221-9836-d66db48a75f0")
HTTPAjouteParamètre("grant_type","refresh_token")
HTTPAjouteParamètre("refresh_token","LnNbg8cfD9hOiKvO6iUf-K6xbXa3UQvWov16X9ZJZGM")

reponseenvoitoken=HTTPEnvoie("token", requeteenvoitoken)


Un grand merci tu m'a permis de me débloquer j'utilisai httpformulaire pour ajouter des médias à des requetes http mais pas pour ce type de demande.
Encore merci