🏋️♂️
タニタの Health Planet API を使用して測定情報を取得する
最近タニタの体組成計を買いました。
Health Planet というサービスを利用して測定情報を記録しているのですが、 API が提供されていたので試してみました。
前提
Health Planet に登録済みであることを前提とします。
1. アプリケーションを登録
アプリケーションの登録ページにアクセスします。
新規登録
をクリックします。
それぞれ次のように入力します。
項目 | 説明 |
---|---|
サービス名 |
任意の名前。 今回は example とします。 |
メールアドレス |
問い合わせ先の任意のメールアドレス。 「2.1. 認可コードを発行する」の手順のアクセス許可画面で表示されます。 今回は自分のメールアドレスを入力します。 |
アプリケーションタイプ |
アプリケーションの種類。 今回は API を叩きたいだけなので クライアントアプリケーション を選択します。 |
それぞれ入力できたら 規約に同意して登録する
をクリックします。
これでアプリケーションが登録されます。
アプリケーションの登録が完了するとクライアント ID とクライアントシークレットが発行されます。
これらは後で必要になるため、ひかえておきます。
2. アクセストークンを発行する
2.1. 認可コードを発行する
ブラウザから次の URL にアクセスします。
https://www.healthplanet.jp/oauth/auth?client_id=<クライアントID>&redirect_uri=https://www.healthplanet.jp/success.html&scope=<スコープ>&response_type=code
各パラメータの説明は次の通りです。
パラメータ名 | 説明 |
---|---|
client_id |
「1. アプリケーションを登録」の手順で発行されたクライアント ID を指定します。 |
redirect_uri |
https://www.healthplanet.jp/success.html を指定します。 |
scope |
API に許可するスコープをカンマ区切りで指定します。 次の値が指定できます。 ・ innerscan ( 体組成情報 )・ sphygmomanometer ( 血圧情報 )・ pedometer ( 歩数情報 )・ smug ( 尿糖情報 )今回は innerscan を指定します。 |
response_type |
code を指定します。 |
そうすると次のようなアクセス許可画面が表示されるため、 アクセスを許可
をクリックします。
すると認可コードが発行されるため、こちらをひかえます。
2.2. アクセストークンを発行する
次のエンドポイントに GET もしくは POST リクエストを送信することでアクセストークンが発行されます。
https://www.healthplanet.jp/oauth/token
必要なパラメータは次の通りです。
パラメータ名 | 説明 |
---|---|
client_id |
「1. アプリケーションを登録」の手順で発行されたクライアント ID を指定します。 |
client_secret |
「1. アプリケーションを登録」の手順で発行されたクライアントシークレットを指定します。 |
redirect_uri |
https://www.healthplanet.jp/success.html を指定します。 |
code |
「2.1. 認可コードを発行する」の手順で発行された認可コードを指定します。 |
grant_type |
authorization_code を指定します。 |
curlを使用する例
$ curl -X POST 'https://www.healthplanet.jp/oauth/token' \
-d 'client_id=<クライアントID>' \
-d 'client_secret=<クライアントシークレット>' \
-d 'redirect_uri=https://www.healthplanet.jp/success.html' \
-d 'code=<認可コード>' \
-d 'grant_type=authorization_code'
すると次のようなアクセストークンが含まれた JSON レスポンスが返されます。
{
"access_token": "****",
"expires_in": 2592000,
"refresh_token": "****"
}
3. 体組成測定情報を取得する
それでは実際に API を叩いてみます。
次のエンドポイントに GET もしくは POST リクエストを送信することで体組成の測定情報を取得できます。
https://www.healthplanet.jp/status/innerscan.json
送信するパラメータは次の通りです。
パラメータ名 | 必須 | 説明 |
---|---|---|
access_token |
◯ | 「2.2. アクセストークンを発行する」の手順で発行されたアクセストークンを指定します。 |
date |
◯ |
from , to の日付タイプ。次の値が指定できます。 ・ 0 ( 登録日付 )・ 1 ( 測定日付 ) |
from |
取得期間の開始日を yyyyMMddHHmmss 形式で指定します。未指定の場合は 3 ヶ月前になります。 |
|
to |
取得期間の終了日を yyyyMMddHHmmss 形式で指定します。未指定の場合は現在の時刻になります。 |
|
tag |
取得する測定部位をカンマ区切りで指定します。 次の値が指定できます。 ・ 6021 ( 体重 )・ 6022 ( 体脂肪率) |
次のコマンドは、 curl
を使用して 2023 年 4 月 9 日に測定した体重・体脂肪率の一覧を取得する例です。
curlを使用する例
$ curl -X POST 'https://www.healthplanet.jp/status/innerscan.json' \
-d 'access_token=<アクセストークン>' \
-d 'date=1' \
-d 'from=20230409000000' \
-d 'to=20230409235959' \
-d 'tag=6021,6022'
すると次のような JSON レスポンスが返されます ( 恥ずかしいので一部の情報は伏せています ) 。
{
"birth_date": "19980131",
"data": [
{
"date": "202304090947",
"keydata": "5*.**",
"model": "01000145",
"tag": "6021"
},
{
"date": "202304090947",
"keydata": "1*.**",
"model": "01000145",
"tag": "6022"
},
{
"date": "202304090120",
"keydata": "5*.**",
"model": "01000145",
"tag": "6021"
},
{
"date": "202304090120",
"keydata": "1*.**",
"model": "01000145",
"tag": "6022"
}
],
"height": "1**",
"sex": "male"
}
-
birth_date
: 誕生日 (yyyyMMdd
形式 ) -
data
: 測定データの一覧-
date
: 測定日 -
keydata
: 測定データ -
model
: 測定機器 ( 値と機器の対応表については仕様書の/status/innerscan
の情報をご参照ください。 ) -
tag
: 測定部位
-
-
height
: 身長 -
sex
: 性別
まとめ
ダイエットがんばるます。
参考
Discussion