Fitbit订阅API

时间:2013-04-24 14:57:01

标签: fitbit

我已经使用Fitbit的PHP库(www.disciplinexgames.com/fitbit)在我的网站上成功整合了FitBit api。它工作正常,但我现在想要使用订阅API,这样我们就可以在新数据可用时立即更新数据库中的数据。我已经浏览了Subscription API文档并使用订阅者端点注册了应用程序但是在获取更新通知时我迷路了。在我的代码中应该添加或更改的内容方面,文档并没有真正得到很多帮助。是否有与订阅API相关的PHP示例代码或我应该做什么的建议。

工作网址:http://www.disciplinexgames.com/fitbit/

任何帮助都将非常感激。它有点沮丧,因为我没有收到任何错误,但同时也没有更新通知。

由于

2 个答案:

答案 0 :(得分: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);

出于测试目的,我建议首先在http://requestb.in/创建一个RequestBin,并将其用作您的订阅者端点URL。通过这种方式,您可以轻松查看Fitbit在有人同步时发送的数据。您可以将该JSON字符串复制到订阅者URL端点代码,并在将站点设置为订阅端点URL之前测试您希望如何处理数据。

我学到的其他几课:

根据您拥有的用户数量,您可能希望将订户URL放在其他服务器上。每次用户同步Fitbit时都会触发此URL,从而导致大量流量。 Fitbit将在10%的时间或更长时间内失败或者在3秒内无法响应时禁用您的订户URL。

另一个重要的部分是,它不会向您发送用户的最新数据。它只会让您知道他们已更新了他们的数据。您仍然需要发出API请求才能获取最新数据。您每个用户每小时只能发出150个API请求,因此最好限制每个用户的检查频率。我有一些用户不断同步,导致每小时收到Fitbit的电子邮件,表明我的应用已经超过了这些用户的速率限制。

答案 1 :(得分:0)

使用Fitbit Web API时,要记住几件事。这是我在整合过程中想到的。

  • 订阅URL需要接受僵尸POST和GET请求。验证URL时使用GET请求部分。 Fitbit通过验证作为查询参数向订阅网址发出请求。

    https://test.demo.com/subscribe?verify=0fcf8334068f84392c2d248060555645b273ef1ada782b25d0ddcb9db32f57a6

    在服务器端,需要在成功验证时发送204的响应状态,在失败时发送404。

    路由通过POST请求接受JSON正文中的通知及其数据,您可以根据需要进行处理。响应状态应始终为204。

  • 注册并验证订阅回调网址后,您需要通过Fitbit的订阅API添加订阅。

    https://api.fitbit.com/1/user/-/apiSubscriptions/someName.json

    正如您所看到的,我没有通过任何导致所有类别被订阅的类别。

    此请求必须使用授权承载方案,该方案使用您从服务器授权代码中获取的访问令牌。

    请求是POST请求,没有正文。

  • 获取访问令牌的API需要x-www-form-urlencoded方法。

  • 确保您始终从信息中心检查成功率。

    enter image description here