😎

fitbit WebAPIを使ってみた

2021/12/25に公開約2,400字

fitbitのスマートウォッチのFitbit Versa 3を使っています.もともと睡眠の質を改善したいと思い購入したのですが,僕のGoogle Pixel 5aで何故かモバイルSuicaが使えず...スマートウォッチを改札でかざして電車に乗っているので重宝しております.
今回はfitbitにWebAPIがあったので使ってみました.APIによっては登録などが面倒な場合もあるのですが,fitbit APIは簡単に使用できました.

Client IDとClient Secretを取得する

https://dev.fitbit.com/apps/new で登録を行います.

OAuth 2.0 Application Typeは,Personalというのがおそらくお試し用?みたいなやつではないかと思っていますが,Clientでも良さそうです.
Redirect URLhttp://localhost/としておき,
Default Access Typeは軽く試したいだけなのでRead Onlyを選択します.
それ以外の項目は適当に埋めておけば良さそうです.

記入できたら下のRegisterボタンをタップすると,登録が完了してClient IDClient Secretが使えるようになります.

アクセストークンを取得する

上の画面のOAuth 2.0 tutorial pageというリンクをポチります.

Flow typeImplicit Grant Flowは非推奨になったはずなので,Authorization Code Flowに変更し,https://www.fitbit.com/oauth2/authorize で始まっているURLをポチります.
※OAuthの知識を忘れかけていたので,雰囲気で使わずきちんと理解する!整理してOAuth2.0を使うためのチュートリアルガイドをKindleで確認しながら進めました.

すべて許可するを選択して許可ボタンをポチります.
リダイレクトされるのでブラウザのURLが http://localhost/?code=00000ABC12345XYZ#= のようになっているので?codeの後ろから#_=_の間の00000ABC12345XYZの部分をコピペします.
コピペしたものをOAuth 2.0 tutorial page(Authorization Code Flowに変更したページ)の1A Get Codeの部分に貼り付けるとcurlコマンドを自動で作成してくれます.

作成されたcurlをターミナルなどでたたくとアクセストークンが取得できます.

{
    "access_token": "<アクセストークン>",
    "expires_in": "<有効期限>",
    "refresh_token": "<アクセストークン>",
    "scope": "<許可したスコープ>",
    "token_type": "<トークンタイプ>",
    "user_id": "<ユーザーID>"
}

ここで使ったWebAPIは,AuthorizeOAuth2 Tokenのあたりです.

Get ProfileAPIをリクエストしてみる

次にGet ProfileAPIをリクエストしてみます.
下記のcurlの<取得したアクセストークン>の部分を先程取得したアクセストークンにするとユーザープロフィールのデータが取得できます.

curl -X GET "https://api.fitbit.com/1/user/-/profile.json" \
-H "accept: application/json" \
-H "authorization: Bearer <取得したアクセストークン>"

ユーザープロフィールだと面白みがないんですが,睡眠のデータ取得などは分析などに使えそうです.

Discussion

ログインするとコメントできます