2013-04-24 4 views
5

Я успешно интегрировал FitBit api на своем веб-сайте, используя библиотеку PHP Fitbit (www.disciplinexgames.com/fitbit). Он работает нормально, но теперь я хочу использовать API подписки, чтобы мы могли обновлять данные в базе данных, как только появятся новые данные. Я прошел через Документы API подписки и зарегистрировал приложение с конечной точкой подписчика, но когда дело доходит до получения уведомлений об обновлении, я теряюсь. На самом деле не получило большой помощи от документов с точки зрения того, что я должен добавить или изменить в своем коде и т. Д. Есть ли какой-нибудь пример кода для PHP, связанный с API подписки, или предложения о том, что я должен делать.Fitbit Subscription API

Работа URL: http://www.disciplinexgames.com/fitbit/

Любая помощь будет очень ценна. Это немного расстроено, поскольку я не получаю никаких ошибок, но в то же время не уведомлений об обновлениях.

Благодаря

+0

Это имеет ссылку ниже пример кода с каркасом FitBit [ссылка] http://stackoverflow.com/questions/34393507/fitbit-framework-is-available/34393522#34393522 – Karthik

ответ

2

Извините за этот ответ ближайшие два года позже, но, возможно, это будет помочь кому-то.

Как только вы знаете токен пользователя &, вы можете подписаться на их канал, используя следующий запрос OAUTH POST. Этот URL-адрес предназначен для фида активности.

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

Ваш абонент URL конечной точки должен быть веб-страницу, где у вас есть код, который может получать данные FitBit и делать все, что вам нужно сделать с ним. Ниже приведен код PHP, который поможет вам начать работу.

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

Для целей тестирования, я предлагаю сначала создать RequestBin в http://requestb.in/ и используя его в качестве конечной точки Subscriber URL. Таким образом, вы можете легко увидеть данные, отправляемые Fitbit, когда кто-то синхронизируется. Вы можете скопировать эту строку JSON в код конечной точки URL-адреса подписчика и проверить, как вы хотите обрабатывать данные, прежде чем устанавливать свой сайт в качестве URL-адреса конечной точки подписки.

Пара других уроков, которые я узнал:

В зависимости от количества пользователей, у вас есть вы можете подписчик URL на другой сервере. Этот URL-адрес будет ударяться каждый раз, когда пользователь синхронизирует свой Fitbit, который может привести к большому количеству трафика. Fitbit отключит ваш URL-адрес подписчика, если он не удастся выполнить 10% времени или больше, или если он не может ответить в течение 3 секунд.

Еще одна важная часть заключается в том, что это не отправляет вам последние данные пользователя. Это только позволяет вам знать, что они обновили свои данные. Вы все равно должны сделать запрос API для получения последних данных. Вы также можете делать только 150 запросов API на пользователя в час, поэтому может быть полезно установить ограничение на частоту проверки каждого пользователя. У меня было несколько пользователей, которые постоянно синхронизировались, что приводило к тому, что каждый час Fitbit получал электронные письма, которые заявили, что мое приложение превысило лимит ставок для этих пользователей.

+0

После 2-х лет , все же я столкнулся с той же проблемой, что и colortheweb. Вы сказали отправить запрос POST на https://api.fitbit.com/1/user/-/activities/apiSubscriptions.json, но я не нашел никакой информации запроса POST в их недавнем doc https: //dev.fitbit .com/reference/web-api/subscriptions для данного URL. Они поддерживают только запрос GET. –

+0

См. Здесь - https://dev.fitbit.com/reference/web-api/subscriptions/#adding-a-subscription – mattferderer