Python
api
fitbit

PythonによるFitbitAPIの始め方

FitbitAPI

せっかくFitbitを持っているしAPI使ってなんかしたいなって思ったのでとりあえず導入

手順

1. Fitbitのページへアクセス

日本語ページがあるけど現状手順2からは英語ページに遷移する

2. 右上のアプリを登録をクリック

ログインする用に言われたら自分のアカウント情報を入力してログイン

3. 必要事項を記入する

注意すべき点は、

  • OAuth2.0 Application TypeをPersonalにする
  • Callback URLをhttp://127.0.0.1:8080/にする

の二点
それ以外の項目は適当に埋めればOK

4. 必要な情報を控える

  • 登録後に表示されるOAuth 2.0 Client IDClient Secretを控えておく
  • direnv(参考)などを用いて管理すると便利

5. Access TokenとRefresh Tokenの取得

  • python-fitbitを、以下のようににクローン

    $ git clone https://github.com/orcasgit/python-fitbit.git
    
  • 4.で控えたClient IDとClient Secretを用いて以下を実行

    $ cd /path/to/python-fitbit
    $ ./gather_keys_oauth2.py 'your Client ID' 'your Client Secret'
    
  • ブラウザが開くのでチェックボックスに必要な分だけチェックを入れて許可

  • コマンドラインに戻るとaccess_tokenrefresh_tokenが表示されているので控える

※「接続しようとしているアプリは Fitbit に有効なデータを提供しませんでした。この問題を報告してください。」と表示される場合

  • MANAGE MY APPSから利用したいアプリケーションを選択(OAuth 2.0 Client IDなどが表示されているページ)
  • Edit Application Settingsを選択してCallback URLがhttp://127.0.0.1:8080/になっているか確認
  • Callback URLを変更したい場合はココとかを参考にpython-fitbit/gather_keys_oauth2.pyファイルを変更する必要あり

6. Pythonプログラムを書く

  • 5までで取得した情報を利用してFitbitAPIを利用する
  • 以下のようなプログラムを書けば歩数を取得することができる
import fitbit


class FitbitApp(object):
    CLIENT_ID = 'your Client ID'
    CLIENT_SECRET = 'your Client Secret'
    ACCESS_TOKEN = 'your access token'
    REFRESH_TOKEN = 'your refresh token'

    def __init__(self):
        self.fitbit_client = fitbit.Fitbit(self.CLIENT_ID, self.CLIENT_SECRET,
                                           access_token=self.ACCESS_TOKEN, refresh_token=self.REFRESH_TOKEN)

    def get_steps(self, base_date, detail_level, start_time, end_time):
        steps_data = fitbit_client.intraday_time_series('activities/steps', base_date=base_date,
                                                        detail_level=detail_lebel, start_time=start_time, end_time=end_time)
        steps_dic_list = steps_date['activities-steps-intraday']['dateset']
        return steps_dic_list

if __name__ == '__main__':
    fitbit_app = FitbitApp()
    base_date = '2018-03-28'
    detail_level = '15min'
    start_time = '10:00'
    end_time = '15:00'
    steps_dic_list = fitbit_app.get_steps(base_date, detail_level, start_time, end_time)
  • 他にどんなデータが取れるかはココとかを参考に

参考