首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fitbit订阅API

Fitbit订阅API
EN

Stack Overflow用户
提问于 2013-04-24 22:57:01
回答 2查看 2.8K关注 0票数 5

我已经成功地使用FitBit的PHP库在我的网站上集成了PHP (www.ciplinexgames.com/fitbit)。它工作得很好,但我想现在使用订阅API,这样一旦有新数据可用,我们就可以更新数据库中的数据。我已经浏览了订阅API文档,并向订阅者终端注册了应用程序,但当涉及到获取更新通知时,我就迷路了。在我应该在代码中添加或更改什么等方面,我并没有从文档中得到太多帮助。有没有任何与订阅API相关的PHP示例代码,或者关于我应该做什么的建议。

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

任何帮助都将不胜感激。这有点令人沮丧,因为我没有收到任何错误,但同时也没有更新通知。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-07-06 21:17:43

很抱歉,这个答案晚了两年,但也许它会对某些人有所帮助。

一旦知道了用户的令牌和令牌秘密,就可以使用下面的OAUTH POST请求订阅他们的提要。此URL用于他们的活动摘要。

代码语言:javascript
复制
<?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代码,可以帮助您入门。

代码语言:javascript
复制
<?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发送的数据。在将站点设置为订阅终结点URL之前,您可以将该JSON字符串复制到订阅者URL终结点代码,并测试您希望如何处理数据。

我还学到了其他几个经验:

根据您拥有的用户数量,您可能希望您的订户URL位于不同的服务器上。每当用户同步他们的Fitbit时,这个URL都会被击中,这可能会导致大量的流量。如果Fitbit在10%或更长的时间内失败,或者无法在3秒内响应,Fitbit将禁用您的订阅者URL。

另一个重要的部分是,这不会向您发送用户的最新数据。它只让你知道他们已经更新了他们的数据。您仍然需要发出API请求才能获得他们的最新数据。您还可以每小时向每个用户发出150个API请求,因此对检查每个用户的频率进行限制可能会更好。我有几个用户经常同步,这导致每小时都会收到来自Fitbit的电子邮件,说我的应用程序已经超过了这些用户的速率限制。

票数 2
EN

Stack Overflow用户

发布于 2018-05-12 06:11:38

在使用Fitbit Web API时,有几点需要牢记。这是我在集成过程中得出的结论。

  • 订阅URL需要接受机器人POST和GET请求。GET请求部分在验证URL时使用。Fitbit使用verify作为查询参数向订阅URL发出请求。

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

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

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

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

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

如你所见,我没有传递任何类别,这会导致所有类别都被订阅。

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

该请求是无正文的POST请求。

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

  • 请确保不断检查仪表板中的成功率。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16195289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档