5

Fitbit の PHP ライブラリ (www.disciplinexgames.com/fitbit) を使用して、自分の Web サイトに FitBit API をうまく統合しました。正常に動作していますが、今すぐサブスクリプション API を使用して、新しいデータが利用可能になるとすぐにデータベース内のデータを更新できるようにしたいと考えています。サブスクリプション API のドキュメントを確認し、アプリをサブスクライバー エンド ポイントに登録しましたが、更新通知の取得に関しては迷子になります。コードに何を追加または変更する必要があるかなど、ドキュメントからあまり助けがありませんでした。サブスクリプション API に関連する PHP のサンプル コードや、何をすべきかの提案はありますか。

作業 URL: http://www.disciplinexgames.com/fitbit/

どんな助けでも本当に感謝します。エラーは発生していませんが、同時に更新通知も表示されていないため、少しイライラしています。

ありがとう

4

2 に答える 2

2

この回答が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 データを受信して​​必要なことを実行できるコードを含む Web ページである必要があります。以下は、開始するための 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 を別のサーバーに配置したい場合があります。この URL は、ユーザーが Fitbit を同期するたびにアクセスされるため、大量のトラフィックが発生する可能性があります。10% 以上の確率で失敗した場合、または 3 秒以内に応答できない場合、Fitbit はサブスクライバー URL を無効にします。

もう 1 つの重要な点は、これはユーザーの最新のデータを送信しないということです。データが更新されたことを知らせるだけです。最新のデータを取得するには、API リクエストを行う必要があります。また、ユーザーごとに 1 時間あたり 150 件の API リクエストしか作成できないため、各ユーザーをチェックする頻度に制限を設けるとよいでしょう。常に同期しているユーザーが何人かいて、その結果、Fitbit から 1 時間ごとに、私のアプリがそれらのユーザーのレート制限を超えたことを示す電子メールが届きました。

于 2015-07-06T13:17:43.150 に答える