Madoma73 a écrit:la team eedomus ne peut rien faire là.
sur la HC2, il y a une api donc j'ai pu faire le script d'interface (cf domo-blog.fr) mais si Myfox ne fournit pas d'api, il n'y a rien que la team eedomus puisse faire.
<?php
// script crÈÈ par Pierre Pollet pour eedomus
// librement inspirÈ du script netatmo Ècrit par Connected Object 
// gÈnÈrÈ ‡ partir des donnÈes Myfox rÈcupÈrÈes via Oauth
// basÈ sur l'auth  "Resource Owner Password Credentials Grant"
// une auth basÈe sur un "authorization code" serait mieux, mais ce n'est faisable
// que par Connected Objects (‡ cause de la callback)
// encodage iso-8859-1 pour les accents
// Version 1 / 22 mai 2014      / 1Ëre version disponible
$GLOBALS['api_url']  = 'https://api.myfox.me:443/v2/';
$api_url = 'https://api.myfox.me:443/v2/';
$ClientId =‘xxxxxxxxxxxxxxxxxxxx’;
$ClientSecret=‘yyyyyyyyyyyyyyyyyyy’;
$getToken_url = 'https://'.$ClientId.':'.$ClientSecret.'@dev.myfox.me';
$UserName =‘xxxxxxxxx’;
$UserPassword=‘yyyyyyyyyyy’;
$access_token='';
// on reprend le dernier refresh_token seulement s'il correspond au mÍme code
$refresh_token = loadVariable('refresh_token');
$expire_time = loadVariable('expire_time');
// s'il n'a pas expirÈ, on peut reprendre l'access_token
if (time() < $expire_time)
 {
   $access_token = loadVariable('access_token');
   //echo "re-utilisation du token existant";
 }
// on a dÈj‡ un token d'accÈs non expirÈ pour le code demandÈe
if ($access_token == '')
{
  if (strlen($refresh_token) > 1)
  {
    // on peut juste rafraichir le token
    $grant_type = 'refresh_token';
    $postdata = 'grant_type='.$grant_type.'&refresh_token='.$refresh_token;
    $url=$getToken_url;
  }
  else
  {
    // 1Ëre utilisation aprÈs obtention du code
    $grant_type = 'password';
    $postdata = 'grant_type='.$grant_type.'&username='.$UserName.'&password='.$UserPassword;
    $url=$getToken_url;
  }
  $response = httpQuery($url.'/oauth2/token', 'POST', $postdata);
  $params = sdk_json_decode($response);
  //var_dump($params);
  
    
  if ($params['error'] != '')
  {
    die("Erreur lors de l'authentification: <b>".$params['error'].'</b> (grant_type = '.$grant_type.')');
  }
  // on sauvegarde l'access_token et le refresh_token pour les authentifications suivantes
  if (isset($params['refresh_token']))
  {
    $access_token = $params['access_token'];
    saveVariable('access_token', $access_token);
    saveVariable('refresh_token', $params['refresh_token']);
    saveVariable('expire_time', time()+$params['expires_in']);
  }
  else if ($access_token == '')
  {
    die("Erreur lors de l'authentification");
  } 
  
  //extraire le code du site
  $siteId=loadVariable('siteId');
  if ($siteId == '') 
  {
    $request="client/site/items";
    $response = httpQuery($api_url.$request."?access_token=".$access_token, 'GET');
    $params2 = sdk_json_decode($response);
    $siteId=$params2['siteId'];
    saveVariable('siteId', $siteId);
   }
}  
 
 function sdk_myfox_query($request, $method = 'GET', $post = NULL, $return_xml = true)
{
  $access_token= loadVariable('access_token');
  if ($post == '')
  {
    $response = httpQuery($GLOBALS['api_url'].$request."?access_token=".$access_token, 'GET');
    //echo  "GET: ". $GLOBALS['api_url'].$request."?access_token=".$access_token;
  }
   else
  {
     $response = httpQuery($GLOBALS['api_url'].$request."?access_token=".$access_token, 'POST');
     echo  "GET: ". $GLOBALS['api_url'].$request."?access_token=".$access_token;
  }
  
  $json = sdk_json_decode($response);
      
   if ($return_xml)
   {
      // permet d'avoir une mise en forme plus lisible dans un browser
      sdk_header('text/xml');
      echo jsonToXML($response);
   }
   else
   {
      return $json;
   }         
}
switch($_GET['action'])
{
   case 'api_get':
      $query = getArg('query');
      sdk_myfox_query($query,'');
    break;
  case 'api_post':
    $query = getArg('query');
     sdk_myfox_query($query,'POST');
     break;
}
?>
Madoma73 a écrit:sinon essaie de faire l'authentification avec un navigateur sur api.myfox.com, ce sera plus simple dans un premier temps.
Madoma73 a écrit:il faut ensuite générer des identifiants dans my applications, puis s'authentifier dans authentification et rentrer le token dans Documentation (simple quoi )
Retour vers Scripts & Périphériques du store
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 26 invité(s)