Funzionamento API

Installazione, configurazione generale, notifiche, API, lingue, problemi server
Post Reply
marco987
FormaLms User
Posts: 25
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: 1005
Joined: Fri Nov 24, 2017 8:45 am
Version: forma.lms 1.4.2

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...
I'm Jasmines, the One. If you need, you can contact me.

marco987
FormaLms User
Posts: 25
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: 25
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: 1005
Joined: Fri Nov 24, 2017 8:45 am
Version: forma.lms 1.4.2

Re: Funzionamento API

Post by alfa24 »

I'm Jasmines, the One. If you need, you can contact me.

marco987
FormaLms User
Posts: 25
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: 25
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