#Fitbitで心拍数を取得する(忘備録)
先日Fitbit Alta HRを購入しました。
データ分析に心拍数や睡眠状態が欲しかったのでAPIを取得できるFitbitを購入。
【環境】
python 3.6.6
windows10
【前提】
Fitbitにログイン済み
pythonインストール済み
python-fitbit/gather_keys_oauth2.py 【OAuth 2.0 Client ID】 【Client Secret】をコマンドラインに入力してアプリ認証をしようとしたのですが、以下のメッセージが出てきて認証できませんでした。
ーーーーーーーーーーーーー
接続しようとしているアプリは Fitbit に有効なデータを提供しませんでした。この問題を報告してください。
Developer information: invalid_request - Invalid redirect_uri parameter value
ーーーーーーーーーーーーー
この原因はわからなかったのですが、今回試した方法では認証できたので、認証できなかった方は試してみて下さい。
##0 準備
###0-1 Postmanをインストール
Postman公式ページからPostmanをインストールします。
###0-2 データ取得用のクライアントをダウンロードする
データ取得用のクライアントをインストールする。Zipファイルでダウンロード。(解凍後、Desktopに置いて使っていました。)
###0-3 クライアントのREADMEに従って必要なものをインストール
pip install python-dateutil==2.4.0
pip install requests-oauthlib
pip install -r requirements/base.txt
pip install -r requirements/dev.txt
pip install -r requirements/test.txt
sudo上手くいかなかったので、とりあえず抜いて入れています。(アドバイスあればお願いします。)
これに加えてcherrypyが必要らしい
pip install cherrypy
コマンドプロンプトに黄色いエラーが出たらとりあえずpathを書き換えたり加えたりして対応してました。
上2つとcherrypyはDesktop、他はpython-fitbit-masterを広げてインストールしました↓
C:\Users\ユーザー名\Desktop\python-fitbit-master>pip install -r requirements/base.txt
C:\Users\ユーザー名\Desktop>pip install numpy
※Could not open requirements file: [Errno 2] No such file or directory: 'requirements/base.txt'などのエラーが出たらこのインストールの仕方を見直してみてください。
##1 Fitbitのアプリケーションに登録
Fitbit開発者ページから自分のfitbitアカウントでログインし、Manageタブ→REGISTER AN APPタブからアプリケーションを登録
項目名 | 入力値 |
---|---|
Application Name | 適当 |
Description | 適当 |
Application Website | 適当 |
Organization | 適当 |
Organization Website | 適当 |
OAuth 2.0 Application Type | Personal |
Callback URL | https://www.getpostman.com/oauth2/callback |
Default Access Type | Read-Only |
※上の5つは適当で構わないようです。(以下注意事項)
Descriptionは10字以上
○○Websiteにはhttp://localhost/をいれてます
OAuth 2.0 Application TypeにはClientまたはPersonalを選択
(Personalにすると秒単位でデータが取れる)
Callback URLにはhttps://www.getpostman.com/oauth2/callbackを入力
Registerボタンをクリックで登録完了
これで、OAuth 2.0 Client ID,Client Secret,Callback URL,OAuth 2.0: Authorization URI,OAuth 2.0: Access/Refresh Token Request URI全てを取得できるのでメモする。
##2 PostmanでAccess Token,refresh Tokenを取得
ここから先はこの方の「2. リクエストヘッダにOAuth認証情報を追加」を参考にしました。
この方のFitbitのアクセス許可で、許可ボタンをクリックすると、Existing Tokensの後に作成されたトークンが表示されるところまで行います。
Available TokensからManage Tokensを選択するとAccess Token,refresh Tokenが表示されます。
##3 データの取得
python-fitbit-masterの中にFitbitTry.pyというファイルを作ります。(ファイル名は自由)
import fitbit
# 2,3で取得したID
CLIENT_ID = "XXXXXXXXXXXXXXXXXXXXXXX"
CLIENT_SECRET = "XXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXX"
REFRESH_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXX"
# 取得したい日付
DATE = "2018-07-06"
authd_client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET
,access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
# 心拍数を取得(1秒単位)
data_sec = authd_client.intraday_time_series('activities/heart', DATE, detail_level='1sec') #'1sec', '1min', or '15min'
heart_sec = data_sec["activities-heart-intraday"]["dataset"]
heart_sec[:10]
print(heart_sec[:10])
これを実行すると心拍数が取れます!
##4.参考
●Qiita
[FitbitのOAuth 2.0 APIをPostmanで試してみる方法]
(https://qiita.com/makopo/items/7f5a47a7c58929b6fb93)
[Pythonでfitbit APIから心拍数を取得してみよう!]
(https://qiita.com/fujit33/items/2af7c4afdb4e07601def)
[python-fitbit データ取得クエリまとめ]
(https://qiita.com/fujit33/items/27d3f3142cf02bb46436)
[一番分かりやすい OAuth の説明]
(https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be)
[Python 3でのファイルのimportのしかたまとめ]
(https://qiita.com/karadaharu/items/37403e6e82ae4417d1b3)
[FitbitのAPIを手っ取り早く試してみる方法]
(https://qiita.com/makopo/items/32f41128c2e055cec68f)
●それ以外のサイト
[Fitbit Charge HRの心拍数データを取得する]
(http://shima-nigoro.hatenablog.jp/entry/2016/05/29/181309)
[APIの開発がむちゃくちゃ捗る「Postman」の使い方]
(https://www.webprofessional.jp/master-api-workflow-postman/)
[Fitbit Apiとpythonで心拍数の取得をする]
(https://futurismo.biz/archives/6903/)
[FitbitのAlta HRを使ってプログラミング無しでゲーム中の心拍数を見る]
(https://maruhoi.com/web/fitbit-api-heart-rate-date-non-programming/)
##5.おすすめ
金の果実 ゴールデンキウイ果汁味