kgポイントコードの下手さは勘弁してください。ポイントになるのは、fitbit.Fitbit()を呼び出すときのrefresh_cb引数です。APIが採用しているOAuth2は、一定時間を超えるとアクセストークンが失効してしまいます(デフォルトでは8時間)。リフレッシュトークンを使えばアクセストークンを更新することができます。その際にリフレッシュトークンも更新されます。python-fitbitモジュールではAPI実行時にトークンが失効していた場合はリフレッシュするところまでやってくれます。保存するところまではやってくれません。先程token.txtに書いたトークンを随時更新していく必要があるのでそこは自分で実装する必要があります。そこで、refresh_cbに関数を渡しておくと、もしfitbit.Fitbit()を呼び出したときにトークンが失効していた場合は自動的にリフレッシュした後、指定した関数に新しいトークンを渡してくれます。updateToken()では新しいトークンを受け取ってファイルに上書きするということをしています。ちなみにトークン更新後にファイルに上書きするのに失敗した場合、再度トークンを使用するためにはトークン新規発行以外に方法はないので注意しましょう。このコードではupdateToken()の中でファイルに上書きをしていますが、DBに入れるとかするともっといいと思います。clientを認証した後は好きにやってあげてください。データの参照も更新もできるはずです。今回コード中でweightを参照していて、Fitbitなのに体重?と思うかもしれませんが、私の場合、体重計はWithingsを使っていてIFTTTを使ってFitbitにも反映されるようにしているので体重が見れます。ハマったところCLIENT_IDとかCLIENT_SECRETとかcodeとかaccess_tokenとかrefresh_tokenとかもうよくわからない。OAuth2が全然わからない。アクセストークンとかの発行の仕方がよくわからなかった。access_tokenとrefresh_tokenが発行できたあと、refresh_tokenの使い方がわからなかった。refresh_tokenの使い方はわかったけど、リフレッシュした後の情報をどうやって保存すればいいのかわからなかった。調べた&ソースコードを読んだ。