Funzionamento API

Installazione, configurazione generale, notifiche, API, lingue, problemi server
Post Reply
marco987
FormaLms User
Posts: 50
Joined: Wed Oct 07, 2020 11:34 am
Version: forma.lms 2.3

Funzionamento API

Post by marco987 »

Salve a tutti. Ho bisogno di consigli sull'uso delle API per favore.
Lato piattaforma (Configurazione > Configurazione sistema > Configurazione > API e Autenticazione) ho spuntato "Abilita le funzionalità delle API", ho inserito un "Codice unico di accesso", una "Aut. Chiave API" e un "Aut. Codice segreto API".
Domanda: Come va modificato/integrato il seguente codice PHP? Grazie

Code: Select all

$params = array("username" => "userLMS", "password" => "passLMS");
$key = "ciaokey";
$secret = "ciaosecret";

$codice_sha1 = strtolower(sha1(implode(",", $params) . "," . $secret));
$codice = base64_encode($key . ":" . $codice_sha1);

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => "http://indirizzopiattaformaLMS.it/api/...", // <- Cosa ci va qui?
    // Cos'altro ci va qui?
    CURLOPT_HTTPHEADER => array(
        "X-Authorization: FormaLMS " . $codice,
        // Ci va altro?
    ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Marco
Web Developer
alfa24
Senior Boarder
Posts: 1979
Joined: Fri Nov 24, 2017 8:45 am

Re: Funzionamento API

Post by alfa24 »

Come già detto a Simone, devi scriverti un tuo layer, come per qualsiasi RESTful interface.
Ti ho scritto anche in privato, hai ignorato...
Per supporto GRATUITO contattatemi in privato qui
marco987
FormaLms User
Posts: 50
Joined: Wed Oct 07, 2020 11:34 am
Version: forma.lms 2.3

Re: Funzionamento API

Post by marco987 »

alfa24 wrote: Wed Oct 21, 2020 9:26 am Come già detto a Simone, devi scriverti un tuo layer, come per qualsiasi RESTful interface.
Ti ho scritto anche in privato, hai ignorato...
Chiedo scusa. L'email arrivatami ieri l'avevo confusa con una risposta automatica :?
Marco
Web Developer
marco987
FormaLms User
Posts: 50
Joined: Wed Oct 07, 2020 11:34 am
Version: forma.lms 2.3

Re: Funzionamento API

Post by marco987 »

Da documentazione:

Code: Select all

$codice_sha1 = strtolower(sha1(implode(',', $params) . ',' . $secret)); 
$codice = base64_encode($key . ':' . $codice_sha1);
$params è sempre come indicato di seguito?

Code: Select all

$params = array("username" => "userLMS", "password" => "passLMS");
Marco
Web Developer
alfa24
Senior Boarder
Posts: 1979
Joined: Fri Nov 24, 2017 8:45 am

Re: Funzionamento API

Post by alfa24 »

Per supporto GRATUITO contattatemi in privato qui
marco987
FormaLms User
Posts: 50
Joined: Wed Oct 07, 2020 11:34 am
Version: forma.lms 2.3

Re: Funzionamento API

Post by marco987 »

Sono riuscito a fare un passo avanti cambiando sulla piattaforma il "Metodo di autenticazione", portandolo da "Generazione di un Token ad ogni connessione" a "Aut. Chiave segreta".
In questo modo /api/user/listUsers funziona, dove
$param = [];

Se provo, invece, /api/user/checkUsername NON funziona, dove
$param = ["userid" => "username"];
e
CURLOPT_URL => "http://sito.it/api/user/checkUsername?userid=username",
Marco
Web Developer
marco987
FormaLms User
Posts: 50
Joined: Wed Oct 07, 2020 11:34 am
Version: forma.lms 2.3

Re: Funzionamento API

Post by marco987 »

Continuo ad avere difficoltà, la frustrazione comincia a farsi sentire... :cry: Col seguente codice alcune cose funzionano e altre no, perché? Dove sbaglio? Grazie in anticipo a chi vorrà aiutarmi.

Code: Select all

<?php
$params = []; // per come varia vedere esempi sotto
$key = "ciaokey";
$secret = "ciaosecret";

$codice_sha1 = strtolower(sha1(implode(',', $params) . ',' . $secret));
$codice = base64_encode($key . ":" . $codice_sha1);

$curl = curl_init();

curl_setopt_array($curl, array(

    /*
        CURLOPT_URL => "http://sito.it/api/user/listUsers",

        Con $params = [] FUNZIONA CORRETTAMENTE
    */
    /*
        CURLOPT_URL => "http://sito.it/api/user/countusers?status=all",

        Con $params = [] FUNZIONA CORRETTAMENTE
    */
    /*
        CURLOPT_URL => "http://sito.it/api/course/courses",

        Con $params = [] FUNZIONA CORRETTAMENTE
    */

    /*
        CURLOPT_URL => "http://sito.it/api/user/checkUsername?userid=formaLMS",

        Con $params = [] dà il seguente ERRORE:
           [error] => User not found // ma sono certo che l’utente esiste
        
        Con $params = ["userid" => "formaLMS",] dà il seguente ERRORE:
            [error] => () // ma sono certo che l’utente esiste
    */
    /*
        CURLOPT_URL => "http://sito.it/api/auth/authenticate?username=formaLMS&password=formaLMS",
        
        Con $params = [] dà il seguente ERRORE:
            [error] => Error: Tokens are not used on this installation. // ma sono certo che l’utente esiste
        
        Con $params = ["username"=>"formaLMS", "password"=>"formaLMS",] dà il seguente ERRORE:
            [error] => () // ma sono certo che l’utente esiste
    */
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "X-Authorization: FormaLMS " . $codice,
    ],
));

$response = curl_exec($curl);
$error = curl_error($curl);

curl_close($curl);

$xml = simplexml_load_string($response);
print_r($xml);
Marco
Web Developer
Post Reply