2013-04-24 9 views
5

ho integrato con successo FitBit api nel mio sito web utilizzando libreria PHP di Fitbit (www.disciplinexgames.com/fitbit). Funziona bene ma ora voglio utilizzare l'API di sottoscrizione, in modo che possiamo aggiornare i dati nel database non appena i nuovi dati diventano disponibili. Ho esaminato i documenti dell'API Subscription e ho registrato l'app con l'endpoint del sottoscrittore, ma quando si tratta di ricevere le notifiche di aggiornamento mi perdo. Non ho avuto molto aiuto dai documenti in termini di cosa dovrei aggiungere o modificare nel mio codice, ecc. C'è qualche codice di esempio per PHP relativo all'API di iscrizione o suggerimenti su cosa dovrei fare.Fitbit Abbonamento API

URL di lavoro: http://www.disciplinexgames.com/fitbit/

Ogni aiuto sarà molto apprezzato. È un po 'frustrato perché non ricevo errori, ma allo stesso tempo non ho notifiche di aggiornamento.

Grazie

+0

Questo collegamento sotto ha codice di esempio con quadro Fitbit [link] http://stackoverflow.com/questions/34393507/fitbit-framework-is-available/34393522#34393522 – Karthik

risposta

2

Ci scusiamo per questa risposta arriva due anni di ritardo, ma forse sarà di aiuto a qualcuno.

Quando si conosce il token di un utente & token segreto, è possibile iscriversi al proprio feed utilizzando la seguente richiesta POST DI OAUTH. Questo URL è per il feed delle loro attività.

<?php 
$consumerKey = "lajsdf23l4l8asdfn238ladf8xjk92oi"; //From Fitbit's website when you sign up for an app 
$consumerSecret = "l8adl3halsdf82p9adfads2gjadsf"; //From Fitbit's website when you sign up for an app 
$oauth = new OAuth($consumerKey,$consumerSecret,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_AUTHORIZATION); 

$usersToken = "k28a9wifvnc89w2o8oigaad8e23r23jf"; 
$usersSecret = "234o8fdofsy8df89aydfoyo84e2902af"; 
$oauth->setToken($usersToken,$usersSecret); 

$subscriptionURL = "https://api.fitbit.com/1/user/-/activities/apiSubscriptions.json"; 

try{ 
    //Send a POST to subscribe as stated on https://wiki.fitbit.com/display/API/Fitbit+Subscriptions+API 
    $oauth->fetch($subscriptionURL, null, OAUTH_HTTP_METHOD_POST); 
    print_r(json_decode($oauth->getLastResponse())); // Make sure the request was successful 
} 
catch(Exception $e){ 
    echo 'ERROR:'; 
    print_r($e); 
    print_r($oauth->getRequestHeader('POST', $url)); 
} 

vostro abbonato endpoint URL deve essere una pagina web in cui si dispone di un codice in grado di ricevere i dati Fitbit e fare tutto ciò che è necessario fare con esso. Di seguito è riportato un codice PHP che ti consentirà di iniziare.

<?php 
// Get the input data and create a PHP object to use. 
$fitbitPushData = file_get_contents("php://input"); 
$fitbitData = json_decode($fitbitPushData); 

A scopo di verifica, vi suggerisco di creare prima una RequestBin a http://requestb.in/ e utilizzando tale come URL abbonato endpoint. In questo modo puoi facilmente vedere i dati che Fitbit invia quando qualcuno si sincronizza. È possibile copiare la stringa JSON nel codice dell'endpoint dell'URL del sottoscrittore e verificare come si desidera gestire i dati prima di impostare il sito come URL dell'endpoint della sottoscrizione.

Un paio di altre lezioni che ho imparato:

A seconda del numero di utenti che si hanno si consiglia l'URL abbonato su un server diverso. Questo URL verrà colpito ogni volta che un utente sincronizza il proprio Fitbit che può causare molto traffico. Fitbit disabiliterà il tuo URL di sottoscrizione se fallisce il 10% delle volte o più o se non è in grado di rispondere entro 3 secondi.

Un'altra parte importante è che questo non ti invio i più recenti dati degli utenti. Ti consente solo di sapere che hanno aggiornato i loro dati. Devi ancora fare una richiesta API per ottenere i loro ultimi dati. Puoi anche fare solo 150 richieste API per utente all'ora, quindi potrebbe essere utile porre un limite alla frequenza con cui controlli ogni utente. Ho avuto alcuni utenti che si sincronizzavano costantemente e che ha portato alla ricezione di e-mail ogni ora da Fitbit che indicava che la mia app aveva superato il limite tariffario per tali utenti.

+0

Dopo 2 anni, ancora sto affrontando lo stesso problema come colortheweb. Hai detto di inviare una richiesta POST a https://api.fitbit.com/1/user/-/activities/apiSubscriptions.json, ma non ho trovato alcuna informazione di richiesta POST nel loro recente documento https: //dev.fitbit .com/reference/web-api/iscrizioni per questo dato URL. Supportano solo la richiesta GET. –

+0

Vedi qui - https://dev.fitbit.com/reference/web-api/subscriptions/#adding-a-subscription – mattferderer