You are not logged in.
Bonjour
j'essaie de mettre en place l'api
GLPI 9.4.3
API est activée et fonctionnelle : j'ai bien la documentation qui s'affiche.
J'ai essayé via Powershell -> KO
J'essaie via php -> Ko aussi, mais... j'explique plus bas.
en php
j'ai repris le script de La denrée
Extrait du script :
$api_url = ".....apirest.php";
$ch = curl_init();
$url=$api_url . "/initSession?Content-Type=%20application/json&app_token=".$app_token."&user_token=".$user_token;
echo("<br> URL <br/>".$url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
echo "<br>Json :". $json."<br/>";
curl_close ($ch);
lors de l'execution : voici le resultat :
initSession?Content-Type=%20application/json&app_token=XXXXXXXX&user_token=YYYYYYYYY
Json :["ERROR_WRONG_APP_TOKEN_PARAMETER",
Or si je reprends la valeur URL publiée avec l'echo
(.....apirest.php/initSession?Content-Type=%20application/json&app_token=XXXXXXXX&user_token=YYYYYYYYY) et que je lance une nouvelle page : j'ai bien un retour json avec la valeur de la session
donc je me dis que l'api est bien fonctionnelle... mais pourquoi alors l'erreur de wrong app token ???
Qu'ai je oublié ?
GLPI 10.0.10
GLPIinventory 1.3.4
Agents : FI (2.6, 2.5) et Glpiagents (1.7)
Offline
le app token est lié à l'adresse IP qui envoie la requête
attention si vous lancez à partir d'un navigateur sur votre poste, ce n'est pas forcément la même IP que le script sur votre serveur. ça peut expliquer.
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Merci pour le retour
le script que j'ai écrit est lancé via navigateur.
j'ai integré lignes pour recupérer l'adresse ip lors de son execution.
Cette adresse ip est bien définie dans l'API
dans le repertoire files/log, api.log
2019-10-30 08:38:42 [@serveur]
Enpoint 'initSession' called by [adresse ip de mon poste]
et dans "Configuration/API" pour l'[adresse ip du poste], je retrouve bien l'app token XXXXXXXXX definie dans le script ...
GLPI 10.0.10
GLPIinventory 1.3.4
Agents : FI (2.6, 2.5) et Glpiagents (1.7)
Offline
conseil : pour le debug, à la place d'un echo $json, faites plutôt un print_r($json); (quitte à faire un echo "<br/>"; avant et après pour une meilleur lecture)
vous aurez le json entier.
(mais ça ne résoud pas cotre problème)
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
URL :
.../apirest.php/initSession?Content-Type=%20application/json&app_token=XXXXXXXXX&user_token=YYYYYYYYYYYY
Adresse ip : [AdresseIP de mon poste], adresse que je viens de ressaisir dans conf/API au niveau Client API...
["ERROR_WRONG_APP_TOKEN_PARAMETER","le paramètre app_token semble incorrect....
L'url .../apirest.php/#errors est fonctionnelle et affiche bien les erreurs possibles...
Si je fais un copie/collé de l'url avec apptoken et user_token, j'ai bien un retour de session token...(onglet supplémentaire dans le navigateur)
GLPI 10.0.10
GLPIinventory 1.3.4
Agents : FI (2.6, 2.5) et Glpiagents (1.7)
Offline
URL :
.../apirest.php/initSession?Content-Type=%20application/json&app_token=XXXXXXXXX&user_token=YYYYYYYYYYYY
Adresse ip : [AdresseIP de mon poste], adresse que je viens de ressaisir dans conf/API au niveau Client API...["ERROR_WRONG_APP_TOKEN_PARAMETER","le paramètre app_token semble incorrect....
L'url .../apirest.php/#errors est fonctionnelle et affiche bien les erreurs possibles...
Si je fais un copie/collé de l'url avec apptoken et user_token, j'ai bien un retour de session token...(onglet supplémentaire dans le navigateur)
Je me pose une question :
Au niveau definition client : ce "nom" doit il correspondre à quelque chose passé en parametre ? ou on peut spécifier un nom 'parlant' quelconque ? le principal etant l'adresse IP ?
GLPI 10.0.10
GLPIinventory 1.3.4
Agents : FI (2.6, 2.5) et Glpiagents (1.7)
Offline
Pour info :
j'ai placé le script (ici test.php) dans un repertoire 'API' histoire de ne pas marcher sur les plate-bandes de GLPI...
dans ce script, rien de particulier, pas de parametrage "GLPI"...
Extrait :
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php
// Roue dentee > Personnalisation > Jeton d'API
$user_token = "YYYYYYYYYYYYYY";
// Configuration > Generale > API > click Nom api client > app_token
$app_token = "XXXXXXXXXXXX";
$api_url=.....
et donc je l'appelle via :
http://.....api/test.php
GLPI 10.0.10
GLPIinventory 1.3.4
Agents : FI (2.6, 2.5) et Glpiagents (1.7)
Offline
bizarre, on dirait que cela ressembel a ce post :
https://forum.glpi-project.org/viewtopic.php?id=171874
GLPI 10.0.10
GLPIinventory 1.3.4
Agents : FI (2.6, 2.5) et Glpiagents (1.7)
Offline
j'avais oublié ce post.
oui ça ressemble.
Trouver la panne avant de réparer...
GLPI10.0.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Si cela peut aider :
j'ai GLPI en localhost, aussi en 9.4.3
Voici mon script php
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php
// Roue dentee > Personnalisation > Jeton d'API
$user_token = "e2H3SUxysx5p9d5a1EZdCoOX08uzHGpjFoyFSISS";
// Configuration > Generale > API > click Nom api client > app_token
$app_token = "blhvpXoapKH4TTLwakevDicMom980usT8YIWx3VX";
$api_url="http://localhost/glpi/apirest.php";
$ch = curl_init();
$url=$api_url . "/initSession?Content-Type=%20application/json&app_token=".$app_token."&user_token=".$user_token;
echo("<br> URL <br/>".$url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HTTPGET, 1);
if ( isset ( $_SERVER['HTTP_X_FORWARDED_FOR'] ) )
{
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif ( isset ( $_SERVER['HTTP_CLIENT_IP'] ) )
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
}
echo "<br>Adresse ip : $ip <br/>";
$json = curl_exec($ch);
echo "<br>";
print_r($json);
echo "<br/>";
curl_close ($ch);
$obj = json_decode($json,true);
$sess_token = $obj['session_token'];
$headers =array(
'Content-Type: application/json',
'App-Token: ' .$app_token,
'Session-Token: '.$sess_token
);
echo("<br> Suite <br/>".$sess_token);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Session-Token: '.$json['session_token'])
);
curl_setopt($ch, CURLOPT_URL, "http://localhost/glpi/apirest.php/Computer/");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"input": {
"name": "test_creation_ordi_api",
"serial": "xxxxxx"
}}'
);
$request_result = curl_exec($ch);
?>
</body>
</html>
je n'ai pas le meme comportement en localhost que sur mon instance de dev : -> Undefined Index... alors que instance de dev : pas de retour session...
Localhost -> wamp,
Dev -> IIS
voici le resultat en localhost
URL
http://localhost/glpi/apirest.php/initSession?Content-Type=%20application/json&app_token=blhvpXoapKH4TTLwakevDicMom980usT8YIWx3VX&user_token=e2H3SUxysx5p9d5a1EZdCoOX08uzHGpjFoyFSISS
Adresse ip : ::1
["ERROR_WRONG_APP_TOKEN_PARAMETER","le paramètre app_token semble incorrect; Afficher la documentation dans votre navigateur à http://localhost/glpi/apirest.php/#ERROR_WRONG_APP_TOKEN_PARAMETER"]
Notice: Undefined index: session_token in C:\wamp64\www\glpi\API\test.php on line 47
Suite
Warning: Illegal string offset 'session_token' in C:\wamp64\www\glpi\API\test.php on line 59
Warning: curl_setopt(): supplied resource is not a valid cURL handle resource in C:\wamp64\www\glpi\API\test.php on line 59
Warning: curl_setopt(): supplied resource is not a valid cURL handle resource in C:\wamp64\www\glpi\API\test.php on line 62
Warning: curl_setopt(): supplied resource is not a valid cURL handle resource in C:\wamp64\www\glpi\API\test.php on line 63
Warning: curl_setopt(): supplied resource is not a valid cURL handle resource in C:\wamp64\www\glpi\API\test.php on line 64
Warning: curl_exec(): supplied resource is not a valid cURL handle resource in C:\wamp64\www\glpi\API\test.php on line 69
GLPI 10.0.10
GLPIinventory 1.3.4
Agents : FI (2.6, 2.5) et Glpiagents (1.7)
Offline
GLPI 10.0.10
GLPIinventory 1.3.4
Agents : FI (2.6, 2.5) et Glpiagents (1.7)
Offline
1) En retirant la connexion app_token, le session_token est généré.
2) J'ai "forcé" la valeur de l'app_token avec un mot quelconque que j'ai remis tel quel dans app_token -> ["ERROR_WRONG_APP_TOKEN_PARAMETER","le paramètre app_token semble incorrect....
-> Ou et comment est recherché l'app_token ? pourquoi le spécifier si sans cela fonctionne ?
GLPI 10.0.10
GLPIinventory 1.3.4
Agents : FI (2.6, 2.5) et Glpiagents (1.7)
Offline