2013-04-24 110 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