タニタの体重計と連携したデータは Health Planet API から取得できます。この記事ではドキュメントを見ながら Health Planet API を叩いて体重と体脂肪率のデータを取得する流れをみていきます。
API の仕様書はこちら: Health Planet API 仕様書 Ver1.0.1
ドキュメントによると以下のとおり OAuth 2.0 に準じているそうなのでアクセストークンを取得していきます
当 API は OAuth 2.0 に準じて作成されております。 各 API において SSL 通信が必須条件となります。
流れは以下のとおり
もう少し具体的なリクエスト内容を書いておくと以下のような雰囲気
# 1. ブラウザで以下のリクエストを行い認可する # GET https://www.healthplanet.jp/oauth/auth?client_id=${CLIENT_ID}&redirect_uri=https://www.healthplanet.jp/success.html&scope=innerscan&response_type=code # 2. リダイレクト先のアプリケーションは以下の curl コマンド相当の内容を実行するとアクセストークンが得られる $ curl -d "client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}&redirect_uri=https://www.healthplanet.jp/success.html&code=${CODE}&grant_type=authorization_code" -X POST https://www.healthplanet.jp/oauth/token {"access_token":"...","expires_in":2592000,"refresh_token":"..."}
こうして取得したアクセストークンを用いて API を叩いていきます。
トークンのリフレッシュ、API ドキュメント上は記載がないのですが ネットに落ちていた記事 にはできると書いてあったので問題がおこるまでひとまずこのリクエストを行う実装を仕込んでおく(ダメだったら追記します)
$ curl -d "client_id=${CLIENT_ID}&client_secret=${CLIENT_SECRET}&redirect_uri=https://www.healthplanet.jp/success.html&grant_type=refresh_token&refresh_token=${REFRESH_TOKEN}" -X POST https://www.healthplanet.jp/oauth/token {"access_token":"...","expires_in":2592000,"refresh_token":"..."}
$ curl https://www.healthplanet.jp/status/innerscan.json?access_token=${ACCESS_TOKEN}&tag=6021,6022&date=1&from=20211201000000&to=20211207000000 { "birth_date": "19890927", "data": [ { "date": "202112051818", "keydata": "63.50", "model": "01000122", "tag": "6021" }, { "date": "202112051818", "keydata": "14.90", "model": "01000122", "tag": "6022" }, { "date": "202112041139", "keydata": "64.20", "model": "01000122", "tag": "6021" }, { "date": "202112041139", "keydata": "16.90", "model": "01000122", "tag": "6022" } ], "height": "177.5", "sex": "male" }
ひまつぶしにこんな感じで取得した私の体重データをインターネットに公開する画期的なサービスを現在作成中なので乞うご期待!
ウェブ界隈でエンジニアとして労働活動に励んでいる @gomi_ningen 個人のブログです