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,
      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. 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. 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 !