2013-04-24 111 views
5

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

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

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

感谢

+0

这下面的链接有fitbit框架示例代码[链接] http://stackoverflow.com/questions/34393507/fitbit-framework-is-available/34393522#34393522 – Karthik 2015-12-21 10:44:13

回答

2

对不起,这个答案未来两年晚,但也许这将是有帮助的人。

一旦您知道了用户的令牌&令牌密钥,您可以使用以下OAUTH POST请求来订阅其供稿。此网址适用于他们的活动Feed。

<?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秒内无法响应,Fitbit将禁用您的订阅者网址。

另一个重要的部分是,这不会向用户发送最近的数据。它只会让你知道他们已经更新了他们的数据。您仍然必须提出API请求才能获取其最新数据。您每个用户每小时也只能发出150个API请求,所以对每次检查用户的频率进行限制可能是一件好事。我有一些不断同步的用户,每小时都会收到来自Fitbit的电子邮件,表示我的应用程序已经超过了这些用户的速率限制。

+0

2年后,仍然面临同样的问题作为colortheweb。你说要发送一个POST请求到https://api.fitbit.com/1/user/-/activities/apiSubscriptions.json,但我还没有在他们最近的文档https://dev.fitbit中找到任何POST请求信息.com/reference/web-api /订阅这个给定的URL。它们只支持GET请求。 – 2017-12-18 04:37:57

+0

请参阅此处 - https://dev.fitbit.com/reference/web-api/subscriptions/#adding-a-subscription – mattferderer 2017-12-19 14:20:31