2013-04-24 3 views
5

Ich habe FitBit api erfolgreich in meine Website integriert, indem ich die Fitbit PHP-Bibliothek (www.disciplinexgames.com/fitbit) verwendet habe. Es funktioniert gut, aber ich möchte jetzt die Abonnement-API verwenden, damit wir die Daten in der Datenbank aktualisieren können, sobald neue Daten verfügbar sind. Ich habe die Subscription-API-Dokumentation gelesen und die App mit dem Endpunkt des Abonnenten registriert, aber wenn es darum geht, die Update-Benachrichtigungen zu erhalten, gehe ich verloren. Hatte nicht wirklich viel Hilfe von den Dokumenten in Bezug darauf, was ich hinzufügen oder ändern in meinem Code, etc. Gibt es Beispiel-Code für PHP in Bezug auf Abonnement-API oder Vorschläge, was ich tun sollte.Fitbit Subscription API

Arbeiten URL: http://www.disciplinexgames.com/fitbit/

Jede Hilfe wird sehr geschätzt werden. Es ist ein bisschen frustriert, da ich keinen Fehler bekomme, aber auch keine Update-Benachrichtigungen.

Dank

+0

Dieser Link unten hat Beispielcode mit Fitbit-Framework [Link] http://StackOverflow.com/Questions/34393507/Fitbit-Framework-is-available/34393522#34393522 – Karthik

Antwort

2

Sorry für diese Antwort späten 2 Jahre kommen, aber vielleicht wird es eine Hilfe für jemanden sein.

Sobald Sie das Token & eines Benutzers kennen, können Sie den Feed mit der folgenden OAUTH POST-Anforderung abonnieren. Diese URL ist für ihren Aktivitäten-Feed bestimmt.

<?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)); 
} 

Ihre Teilnehmer URL Endpunkt sollte eine Webseite, wo Sie einen Code haben, der die Fitbit-Daten empfangen kann und tun, was Sie mit ihm getan brauchen. Im Folgenden finden Sie einen PHP-Code, mit dem Sie beginnen können.

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

Zu Testzwecken schlage ich zuerst eine RequestBin bei http://requestb.in/ Erstellen und Verwenden dass als Subscriber Endpunkt-URL. Auf diese Weise können Sie leicht die Daten sehen, die Fitbit sendet, wenn jemand synchronisiert. Sie können diese JSON-Zeichenfolge in Ihren Abonnenten-URL-Endpunktcode kopieren und testen, wie Sie mit den Daten umgehen möchten, bevor Sie Ihre Website als Endpunkt-URL des Abonnements festlegen.

Ein paar andere Lektionen, die ich gelernt habe:

Je nach Anzahl an Benutzern haben Sie Sie Ihre Teilnehmer-URL auf einem anderen Server möchten. Diese URL wird jedes Mal getroffen, wenn ein Nutzer sein Fitbit synchronisiert, was zu viel Traffic führen kann. Fitbit deaktiviert Ihre Abonnenten-URL, wenn sie 10% der Zeit oder mehr ausfällt oder wenn sie nicht innerhalb von 3 Sekunden antworten kann.

Ein weiterer wichtiger Teil ist, dass dies nicht die neuesten Daten des Benutzers sendet. Es lässt Sie nur wissen, dass sie ihre Daten aktualisiert haben. Sie müssen noch eine API-Anfrage stellen, um ihre neuesten Daten zu erhalten. Sie können auch nur 150 API-Anfragen pro Benutzer und Stunde erstellen. Es kann daher sinnvoll sein, die Häufigkeit der Überprüfung für jeden Benutzer einzuschränken. Ich hatte ein paar Benutzer, die ständig synchronisierten, was dazu führte, dass stündlich von Fitbit E-Mails empfangen wurden, in denen stand, dass meine App das Ratenlimit für diese Nutzer überschritten hatte.

+0

Nach 2 Jahren habe ich immer noch das gleiche Problem als colortheweb. Sie haben gesagt, dass Sie eine POST-Anfrage an https://api.fitbit.com/1/user/-/activities/apiSubscriptions.json senden sollen, aber ich habe keine POST-Anfrage-Informationen in ihrem aktuellen Dokument https: //dev.fitbit gefunden .com/reference/web-api/Abonnements für diese angegebene URL. Sie unterstützen nur GET-Anfrage. –

+0

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

Verwandte Themen