Accès à l'API FITBIT sans librairie Oauth

Utilitaires développés par les utilisateurs

Accès à l'API FITBIT sans librairie Oauth

Messagepar Havok » 16 Fév 2015 14:54

Bonjour,

Voici un petit didacticiel pour intégrer à votre eedomus les données Fitbit (bracelets, balance).
Il existe déjà un didacticiel sur le sujet à partir duquel je suis partit : viewtopic.php?f=16&t=1092

Le soucis est que j'ai un hébergement mutualité chez OVH qui, à ma connaissance, ne propose pas la librairie Oauth. Il a fallut faire sans :) Bref une méthode pour tout ceux qui ont un hébergement mais pas accès à la lib Oauth.

1- Récupérez les scripts :
http://www.phpclasses.org/package/7700- ... OAuth.html
et
http://www.phpclasses.org/package/3-PHP ... pages.html

2- Décompressez et installez les fichiers sur votre serveur (tout dans un même répertoire), par exemple : http://www.votreserveur.com/eedomus/

3- Créez une application sur https://dev.fitbit.com/apps, cela vous donne une <CONSUMER-KEY> et un <CONSUMER-SECRET>

4- Modifiez, sur votre serveur le fichier login_with_fitbit.php par le code ci-dessous, puis remplacez les variables <CONSUMER-KEY> et <CONSUMER-SECRET> par les valeurs obtenues au point 3
Code : Tout sélectionner
<?php
/*
 * login_with_fitbit.php
 *
 * @(#) $Id: login_with_fitbit.php,v 1.2 2013/07/31 11:48:04 mlemos Exp $
 *
 */

   /*
    *  Get the http.php file from http://www.phpclasses.org/httpclient
    */
   require('http.php');
   require('oauth_client.php');

   $client = new oauth_client_class;
   $client->debug = 1;
   $client->debug_http = 1;
   $client->server = 'Fitbit';
   $client->redirect_uri = 'http://'.$_SERVER['HTTP_HOST'].
      dirname(strtok($_SERVER['REQUEST_URI'],'?')).'/login_with_fitbit.php';

   $client->client_id = '<CONSUMER-KEY>'; $application_line = __LINE__;
   $client->client_secret = '<CONSUMER-SECRET>';

   if(strlen($client->client_id) == 0
   || strlen($client->client_secret) == 0)
      die('Please go to Fitbit application registration page https://dev.fitbit.com/apps/new , '.
         'create an application, and in the line '.$application_line.
         ' set the client_id to Consumer key and client_secret with Consumer secret. '.
         'The Callback URL must be '.$client->redirect_uri).' Make sure this URL is '.
         'not in a private network and accessible to the Fitbit site.';

   if(($success = $client->Initialize()))
   {
      if(($success = $client->Process()))
      {
         if(strlen($client->access_token))
         {
            $success = $client->CallAPI(
               'https://api.fitbit.com/1/user/-/profile.json',
               'GET', array(), array('FailOnAccessError'=>true), $user);
         }
      }
      $success = $client->Finalize($success);
   }
   if($client->exit)
      exit;
   if($success)
   {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Fitbit OAuth client results</title>
</head>
<body>
<?php
      echo '<h1>', HtmlSpecialChars($user->user->displayName),
         ' you have logged in successfully with Fitbit!</h1>';
      //echo '<pre>', HtmlSpecialChars(print_r($user, 1)), '</pre>';
      echo '<pre>', HtmlSpecialChars(print_r($client, 1)), '</pre>';
?>
</body>
</html>
<?php
   }
   else
   {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OAuth client error</title>
</head>
<body>
<h1>OAuth client error</h1>
<p>Error: <?php echo HtmlSpecialChars($client->error); ?></p>
</body>
</html>
<?php
   }

?>


5- Lancer le fichier http://www.votreserveur.com/eedomus/log ... fitbit.php
identifiez-vous avec vos logins fitbit.
Une page de résultat va s'afficher
récupérez les valeurs de
Code : Tout sélectionner
[access_token] => xxxxxxxxxxxxxxxxxxxxxxxx
[access_token_secret] => yyyyyyyyyyyyyyyyyyyyyyy


Normalement cette page ne sert qu'une seule fois pour récupérer les 2 identifiants token !

6- Créez un fichier fitbit.php avec le code suivant puis remplacez les variables <CONSUMER-KEY> et <CONSUMER-SECRET> par les valeurs obtenues au point 3, <ACCESS-TOKEN> et <ACCESS-TOKEN-SECRET> par les valeurs obtenues au point 5
Code : Tout sélectionner
<?php

require 'http.php';
require 'oauth_client.php';

   $client = new oauth_client_class;
   $client->debug = 1;
   $client->debug_http = 1;
   $client->server = 'Fitbit';
   $client->redirect_uri = 'http://'.$_SERVER['HTTP_HOST'].
      dirname(strtok($_SERVER['REQUEST_URI'],'?')).'/fitbit.php';

   $client->client_id = '<CONSUMER-KEY>'; $application_line = __LINE__;
   $client->client_secret = '<CONSUMER-SECRET>';

   if(strlen($client->client_id) == 0
   || strlen($client->client_secret) == 0)
      die('Please go to Fitbit application registration page https://dev.fitbit.com/apps/new , '.
         'create an application, and in the line '.$application_line.
         ' set the client_id to Consumer key and client_secret with Consumer secret. '.
         'The Callback URL must be '.$client->redirect_uri).' Make sure this URL is '.
         'not in a private network and accessible to the Fitbit site.';
   $client->access_token = '<ACCESS-TOKEN>';
   $client->access_token_secret = '<ACCESS-TOKEN-SECRET>';

   if(($success = $client->Initialize()))
   {
         if(strlen($client->access_token))
         {
            $success = $client->CallAPI(
               'https://api.fitbit.com/1/user/-/activities/date/'.date("Y-m-d").'.xml',
               'GET', array(), array('FailOnAccessError'=>true), $user);
         }
      $success = $client->Finalize($success);
   }
   if($client->exit)
      exit;
   if($success)
   {
?>
<?php
      echo $user;
?>
<?php
   }
   else
   {
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OAuth client error</title>
</head>
<body>
<h1>OAuth client error</h1>
<p>Error: <?php echo HtmlSpecialChars($client->error); ?></p>
</body>
</html>
<?php
   }

?>


Dans cet exemple l'appel de l'API fitbit va permettre de récupérer le nombre de pas effectués pour la journée en cours. Si vous souhaitez d'autres données (poids, sommeil, etc...) reportez vous à la doc suivante : https://wiki.fitbit.com/display/API/Fit ... Access+API
Il suffira de changer la ligne
Code : Tout sélectionner
'https://api.fitbit.com/1/user/-/activities/date/'.date("Y-m-d").'.xml'


7- Enfin le truc classique sur la eedomus :
configuration / ajouter un périphérique / Capteur http
Image

Reste plus qu'a tester :)

PS: A noter que si vous relancer plusieurs fois l'étape 5 login_with_fitbit.php (alors qu'il n'y a aucune raison de le faire sauf si cela ne fonctionne plus) vous risquez d'avoir des identifiants TOKEN différents. Il faudra alors mettre à jour le fichier fitbit.php
Havok
 
Messages : 702
Inscription : 06 Fév 2015

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar ASECADOMOTIQUE54 » 17 Fév 2015 09:11

Génial, beau tuto qui fonctionne impeccable! depuis le temps que je galère avec la librairie Aouth qui visiblement n'est pas présente sur DSM5.1 .
Merci à toi pour cette contribution Havok tu viens déjà de faire un heureux ;)
reste plus qu'a décrypter le xml pour voir ce qu'on peu en tirer :D
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar benjee » 17 Fév 2015 14:23

Bonjour,
testé et validé également...
J'ai ressorti le nombre de pas, l'indice IMC et le poids de la balance...
ça tourne !!
Merci
__________________
Benjee
benjee
 
Messages : 122
Inscription : 14 Oct 2013


Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar l0ghan » 11 Mai 2015 13:32

Bonjour,

JE me suis fait un petit cockpit pour le fitbit dans EEdomus :)

Image

Avec la recuperation des alarms et le fait qu'elles soient activées ou pas
Merci @Havoc pour les scripts :)
julien
l0ghan
 
Messages : 56
Inscription : 04 Mai 2015

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar rvp31 » 19 Mai 2015 20:21

Alors moi j'ai un Pb avec le poids et la masse graisseuse. SI je regarde le doc de l'API, ils disent que pour récupérer le poids, il faut faire un GET avec le mot clef "body" à l place de activities.
Mais quand j'execute le script, il me retourne une erreur :
Code : Tout sélectionner
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OAuth client error</title>
</head>
<body>
<h1>OAuth client error</h1>
<p>Error: it was not possible to access the API call: it was returned an unexpected response status 404 Response: <?xml version="1.0" encoding="UTF-8"?><result><errors><apiError><errorType>request</errorType><fieldName>n/a</fieldName><message>The API you are requesting could not be found.</message></apiError></errors><success>false</success></result></p>
</body>
</html>


Je précise que ça fonctionne avec "activities". Quelqu'un a la même erreur ?
rvp31
 
Messages : 32
Inscription : 07 Avr 2015

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar ASECADOMOTIQUE54 » 19 Mai 2015 21:27

moi aussi je me suis fait mon petit menu santé avec les données fitbit et withings :D encore merci à Havok pour son partage ;)
[img]
santé.jpg
[/img]
Pièces jointes
santé.jpg
santé.jpg (128.14 Kio) Consulté 24170 fois
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar rvp31 » 20 Mai 2015 19:24

BOn ben j'ai résolu mon pb en allant faire un tour sur le forum de dev de fitbit.
En fait l'URL exacte pour récupérer les datas est maintenant :

https://api.fitbit.com/1/user/-/body/lo ... e/date.xml

J'avais fait le test mais il manquait juste le "repertoire" date..

Si ça peut en aider d'autre ..
rvp31
 
Messages : 32
Inscription : 07 Avr 2015

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar Madoma73 » 20 Mai 2015 22:49

@Asecadomotique54,
Tu crois qu'il y aurait moyen de récupérer ton script ?
J'ai un peu la flemme sur ce coup la ! :?
Pierre
Madoma73
 
Messages : 1440
Inscription : 16 Sep 2012
Localisation : 38

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar ASECADOMOTIQUE54 » 20 Mai 2015 23:11

Madoma73 a écrit:@Asecadomotique54,
Tu crois qu'il y aurait moyen de récupérer ton script ?
J'ai un peu la flemme sur ce coup la ! :?

Oui bien sur je te met ça a dispo demain!
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar ASECADOMOTIQUE54 » 21 Mai 2015 21:35

Il te faut quoi exactement pierre comme fichiers? Parce que il y a du monde dans mon dossier fitbit.
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar Madoma73 » 26 Mai 2015 19:17

bin, je sais pas...
si ça te dérange pas, envoie moi ton dossier fitbit, je ferai le tri et si tu veux je fais un beau tuto sur domo-blog en disant bien que c'est toi l'auteur :D
Pierre
Madoma73
 
Messages : 1440
Inscription : 16 Sep 2012
Localisation : 38


Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar Madoma73 » 26 Mai 2015 19:41

oula, j'ai foiré :oops:
je sais pas pourquoi, j'ai lu le post en diagonale et j'étais persuadé que @Asecadomotique était l'auteur...

Mea Culpa !
mais ma proposition tient cependant toujours si tu m'autorises à faire le tuto sur domo-blog :-)
Pierre
Madoma73
 
Messages : 1440
Inscription : 16 Sep 2012
Localisation : 38


Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar ASECADOMOTIQUE54 » 27 Mai 2015 10:00

bas alors Pierre tu sais bien que je suis incapable de pondre ce genre de choses! :lol: ;) :lol:
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar Alex30 » 12 Juin 2015 06:25

Bonjour et Merci pour le Tuto

MErci :!:
Dernière édition par Alex30 le 16 Juin 2015 05:32, édité 1 fois.
Alex30
 
Messages : 3
Inscription : 12 Juin 2015

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar Madoma73 » 15 Juin 2015 21:28

@l0ghan @Asecadomotique elles sont sympas vos icônes, y aurait moyen de les partager ?
Pierre
Madoma73
 
Messages : 1440
Inscription : 16 Sep 2012
Localisation : 38

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar ASECADOMOTIQUE54 » 16 Juin 2015 11:48

Normalement toute mes icônes sont partagées. ;-)
ASECADOMOTIQUE54
 
Messages : 639
Inscription : 14 Déc 2013
Localisation : Nancy

Re: Accès à l'API FITBIT sans librairie Oauth

Messagepar Madoma73 » 16 Juin 2015 15:06

yep, mais c'est un tel bin's que c'est dur de retrouver quoique ce soit !
Pierre
Madoma73
 
Messages : 1440
Inscription : 16 Sep 2012
Localisation : 38

Suivant

Retour vers Outils tiers

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 7 invité(s)