PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2025 → Pb liason http avec l'api d'ebp
Pb liason http avec l'api d'ebp
Iniciado por Christophe, jun., 23 2025 11:43 AM - 4 respostas
Publicado em junho, 23 2025 - 11:43 AM
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)
Membro registado
2.254 mensagems
Publicado em junho, 23 2025 - 5:01 PM
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
Mensagem modificada, junho, 23 2025 - 5:23 PM
Publicado em junho, 26 2025 - 5:01 PM
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
Membro registado
487 mensagems
Publicado em junho, 27 2025 - 5:33 PM
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)
Publicado em julho, 02 2025 - 10:50 AM
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