【发布时间】:2021-08-19 19:19:13
【问题描述】:
我需要在 Google 健身中获取最近的活动列表,包括旅行的距离。
我正在使用直接 REST API 请求(PHP 通过 cURL)。
- 首先,我通过 oAuth 2.0 进行授权
-
授权后,我被重定向到我的站点 %REDIRECT_URI%,其中 GET 请求包含“代码”。
-
我使用这个“代码”来获取授权令牌:
POST - https://www.googleapis.com/oauth2/v3/token
POST data: {
'code': %CODE_FROM_GET_PARAM%,
'client_id' => %CLIENT_ID%,
'client_secret' => %CLIENT_SECRET%,
'grant_type' => 'authorization_code',
'redirect_uri' => %REDIRECT_URI%
}
-
完成请求后,我收到一个“ya29.a0ARrdaM-...”形式的身份验证令牌,我使用此令牌进行标头承载授权。
-
我向https://www.googleapis.com/fitness/v1/users/me/sessions 发出请求以获取活动列表:
"session": [
{
"id": "Run1629350880000",
"name": "Run",
"description": "",
"startTimeMillis": "1629350880000",
"endTimeMillis": "1629352020000",
"modifiedTimeMillis": "1629358291250",
"application": {
"packageName": "com.xiaomi.hm.health"
},
"activityType": 8
}, ...
]
根据这个列表,我可以看到运行时间(startTimeMillis,endTimeMillis),但我仍然需要获取距离。
接下来我该怎么做?
【问题讨论】:
-
@mikegross 此解决方案适用于 Android,不适用于 REST API
-
哦,我的错!在仔细阅读developers.google.com/fit/rest/v1/reference之后,我发现没有特别关注距离。可能是你在用户运行的时候要自己记录。但我明白为什么不记录它,fit API 是记录许多不同的运动(冰壶等),并不是所有的运动都有与它们相关的距离。所以可能 Google Fit API 不存储距离。
-
Session 的字段描述为here。距离不是 Session 中记录的字段。