この回答が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 時間ごとに、私のアプリがそれらのユーザーのレート制限を超えたことを示す電子メールが届きました。