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 5 invité(s)