You are not logged in.
Pages: 1
Topic closed
Bonjour,
Je souhaite importer mes ordinateurs dans GLPI à l'aide de l'API REST. Je rencontre un problème avec ma variable $sess_token qui reste désespérément vide...
Voici le début de mon script :
<?php
echo 'Version PHP courante : ' . phpversion();
//initialisation des variables
$nomcsv = $_GET['nom'];
$mycsvfile="/var/tmp/". $nomcsv;
echo " <br/>chemin : ". $mycsvfile ."<br/>";
$api_url="http://mon_serveur_GLPI/informatique/apirest.php";
$user_token="XXXXXX";
$app_token ="XXXXXX";
//initialisation api glpi
$ch = curl_init();
$url=$api_url . "/initSession?Content-Type=%20application/json&app_token=".$app_token ."&user_token=".$user_token;
// ligne suivante pour debug à commenter en prod;
echo "<br/>url authentification : " . $url . "<br/>" ;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
curl_close ($ch);
$obj = json_decode($json, true);
// ligne suivante pour debug à commenter en prod;
print_r($obj);
$sess_token = $obj['session_token'];
// ligne suivante pour debug à commenter en prod;
echo " <br/>session token : ". $sess_token ."<br/>";
$headers = array(
('Content-Type: application/json'),
('App-Token: ' . $app_token),
('Session-Token: '. $sess_token)
);
// ligne suivante pour debug à commenter en prod;
print_r($headers);
Pouvez-vous m'aider à trouver mon erreur?
D'avance merci,
Bastien
Last edited by bastien.prost (2018-03-28 15:05:40)
Offline
vous n'avez pas mis votre glpi dans un dossier glpi ?
$api_url="http://mon_serveur_GLPI/informatique/apirest.php";
j'aurais pensé : $api_url="http://mon_serveur_GLPI/informatique/glpi/apirest.php";
quelle version GLPI ?
question bête : avez vous activé l'api ?
avez vous autorisé l'IP ?
si dans un navigateur vous saisissez l'url http://mon_serveur_GLPI/informatique/glpi/apirest.php avez vous une réponse ?
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
Bonjour,
Non GLPI n'est pas dans un dossier GLPI.
Je suis en version 9.2.2, désolé j'ai oublié de le préciser.
J'ai activé l'API et j'ai autorisé l'ip de mon poste de test.
Si je vais sur http://mon_serveur_GLPI/informatique/apirest.php j'arrive bien sur la documentation de l'API
Si je vais sur http://mon_serveur_GLPI/informatique/apirest.php/initSession?Content-Type=%20application/json&app_token=XXXX&user_token=XXXX il me renvoie bien mon session_token
Merci pour votre aide.
Bastien
Last edited by bastien.prost (2018-03-28 15:48:56)
Offline
votre navigateur est sur votre poste mais votre script php est sur un serveur donc avec une autre IP; avez vous autorisé cette IP ( ou 127.0.0.1 si votre php est sur le même serveur que glpi)
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
Mon script est sur le même serveur que GLPI.
J'avais laissé la règle par défaut "Full access from localhost" donc le serveur était autorisé par contre je n'avais pas généré l'app_token pour cette règle. Je viens de le faire et j'ai modifié celui-ci dans mon script mais j'ai toujours le même comportement.
Offline
si vous êtes sur le même serveur votre url doit être "localhost/informatique/apirest.php";
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
Le script est sur mon serveur GLPI et j'y accède à partir d'un poste de test.
Je viens de modifier l'url dans le script afin de mettre localhost/informatique/apirest.php, malheureusement ma variable sess_token est toujours vide.
Offline
essayez un print_r($json); qui va peut être renvoyer un indice avec un message d'erreur.
je sèche, j'ai exactement le même code ( sauf faute de fraape que je n'aurai pas vue) et ça marche chez moi
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
Je me suis appuyé sur un script à vous pour faire le mien donc effectivement il ne doit pas y avoir beaucoup de différences
Lorsque j'ajoute print_r($json); je suis redirigé vers la page d'accueil de mon glpi.
Offline
????
$api_url="localhost/glpi/apirest.php";
$app_token="apptockenQui correspondAMonIP";
$user_token="MonJetonApi";
echo "session token<br/>";
$ch = curl_init();
$url=$api_url . "/initSession?Content-Type=%20application/json&app_token=".$app_token ."&user_token=".$user_token;
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
curl_close($ch);
print_r($json);
$obj = json_decode($json,true);
$sess_token = $obj[session_token];
echo $sess_token;
die($url);
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
Et bien je ne comprend vraiment pas! J'ai repris ce que vous avez mis dans votre dernier post afin d'être sûr de ne pas avoir d'erreur et j'ai le même comportement... Je suis redirigé vers la page d'accueil de mon GLPI.
Dès que je commente la ligne print_r($json); je n'ai plus de redirection.
Offline
Finalement votre première remarque était la bonne!
Notre GLPI est bien dans un dossier GLPI... Nous avons ensuite mis en place une redirection.
En remplaçant l'url par http://localhost/glpi/apirest.php cela fonctionne.
Merci pour le coup de main!
Offline
Pages: 1
Topic closed