API Freebox OS : connexion PHP

Résolu
Bonjour,

Je me lance dans l' API de la freebox V6 mais je suis confronté à un problème de login, je m'explique.

1 - J'accepte mon appli : /api/v1/login/authorize/ et récupéré le app_token
2 - Je récupère le chalenge : /api/v1/login/
3 - je récupère le session_token : /api/v1/login/session/ (Problème !)

Voilà ou je bloque ci-dessous mon code :
$password = hash_hmac('sha1', $app_token, $challenge);

$url = "http://mafreebox.free.fr/api/v1/login/session/";

$fields = array(
    'app_id' => "test.local.testapp",
    'password' => $password
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$response = curl_exec($ch);
curl_close($ch);

echo '<pre>';
    print_r(json_decode($response));
echo '</pre>';


Sauf que j'obtiens toujours l'erreur invalid_token, je ne vois pas ou se trouve le problème, si quelqu'un peut me venir en aide.

Merci.

8 réponses

  1. Problème résolu,

    Pour ce que rencontrerais le problème en PHP il faut inverser le app_token et le chalenge session.

    le code
    $password = hash_hmac('sha1', $app_token, $challenge);
    devient
    $password = hash_hmac('sha1', $challenge, $app_token);
    1. Bonjour,

      Voici un exemple d'utilisation de l'API Freebox OS :

      http://www.xenero-developpement.com/2013/08/11/api-freebox-os-ouverture-dune-session/
      1. Bonjour,
        J'ai le même problème que toi.
        J'arrive à récupérer l'app_token et le challenge, mais je bloque à la troisième étape lorsque je veux récupérer le session_token.
        J'ai bien essayé d'inverser le challenge et l'app_token lors du hash du password, mais rien n'y fait dans mon cas...
        une idée ?
        1. As-tu accepté ton application sur ta Freebox?

          Pour cela regarde les permissions sur ta Freebox :
          http://mafreebox.free.fr -> Paramètres de la Freebox -> Gestion des accès -> Applications.
          1. Merci de ta réponse ...
            Oui, j'ai accepté l'application.
            Elle apparait bien dans l'onglet applications de l'interface de la Freebox.
            Mais lorsque je veux récupérer le session_token voila ce que j'obtiens :

            stdClass Object
            (
            [uid] => 6dd396a8b0491f42daba03f3415559c3
            [success] =>
            [msg] => Erreur d'authentification de l'application
            [result] => stdClass Object
            (
            [password_salt] => fjqqlr/DNnU2LBDKEWeNlmacSjDVtn2W
            [challenge] => nj+UDb0fZVeFSr6lrfKpvlR4kHzYg+XS
            )

            [error_code] => invalid_token
            )
            1. Donc tu as autorisé ton application, et tu as récupéré le token de cette application.

              Ensuite, tu fais un GET sur /api/v1/login/ duquel tu récupères la chaleur chalenge

              Pour ensuite tu fais un POST sur /api/v1/login/session/ en lui envoyé le app_id et le mot de passe hashé avec la fonction :
              $password = hash_hmac('sha1', $challenge, $app_token);
              ?
              1. Hello,

                J'ai le meme probleme que Cvfe13. Vous avez trouvé une solution ? (que j'alterne $challenge ou $app_token, cela ne fonctionne pas..)

                Merci !