Cho*_*sby 10 google-api google-fit
自从我在Nexus 5上安装Google Fit应用程序以来,它一直在跟踪我的步数和步行时间.我想通过Google Fitness REST api(docs)检索此信息,但我无法弄清楚如何从REST api获取任何数据.
我已经使用OAuth 2.0操场成功列出了dataSources,但我尝试过的示例都没有返回任何健身数据.我觉得我需要使用类似于(Android SDK)的DataReadRequest的东西,但我没有构建Android应用程序 - 我只想访问已经由Google Fit应用程序存储的健身数据.
甚至可以获得Google Fit应用收集的数据吗?如果是这样,我如何使用REST api读取和聚合步数数据?
事实证明,答案完全在文档中.这是请求的格式.
GET https://www.googleapis.com/fitness/v1/users/{userId}/dataSources/{dataSourceId}/datasets/{datasetId}
唯一支持的{userId}值是me(使用身份验证).
{dataSourceId}通过运行不同的请求可以获得可能的值.
我错过的一点是,这{datasetId}不是一个真正的ID,但实际上你定义了你感兴趣的时间跨度.该变量的格式是{startTime}-{endTime}自纪元以来的时间以纳秒为单位.
我能够通过google php 客户端完成这项工作,并注意到他们为GET请求附加了额外的 0 - 9的开始和结束时间。
使用GET上述答案中提到的相同请求格式:
https://www.googleapis.com/fitness/v1/users/{userId}/dataSources/{dataSourceId}/datasets/{datasetId}
Run Code Online (Sandbox Code Playgroud)
现在这是一个带有unix时间戳的示例(php的time()函数使用了这个)
https://www.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.step_count.delta:com.google.android.gms:estimated_steps/datasets/1470475368-1471080168
Run Code Online (Sandbox Code Playgroud)
这是我得到的回应:
{
"minStartTimeNs": "1470475368",
"maxEndTimeNs": "1471080168",
"dataSourceId":
"derived:com.google.step_count.delta:com.google.android.gms:estimated_steps
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您将开始时间和结束时间附加0到您的GET请求中,并像这样调整您的请求:
https://www.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.step_count.delta:com.google.android.gms:estimated_steps/datasets/1470475368000000000-1471080168000000000
Run Code Online (Sandbox Code Playgroud)
它奏效了——这是我得到的回应:
{
"minStartTimeNs": "1470475368000000000",
"maxEndTimeNs": "1471080168000000000",
"dataSourceId":
"derived:com.google.step_count.delta:com.google.android.gms:estimated_steps",
"point": [
{
"modifiedTimeMillis": "1470804762704",
"startTimeNanos": "1470801347560000000",
"endTimeNanos": "1470801347567000000",
"value": [
{
"intVal": -3
}
],
"dataTypeName": "com.google.step_count.delta",
"originDataSourceId": "raw:com.google.step_count.delta:com.dsi.ant.plugins.antplus:AntPlus.0.124"
},
Run Code Online (Sandbox Code Playgroud)
回复要长很多,但为了这篇文章,我截断了它。因此,当将您的datasets参数传递到请求中时:
1470475368-1471080168不会工作,但1470475368000000000-1471080168000000000会。
这对我有用,希望它可以帮助某人!
小智 5
我尝试使用以下 URL 和正文发布方法。这将起作用,请检查内嵌评论。
使用网址:https : //www.googleapis.com/fitness/v1/users/me/dataset : aggregate 方法:POST 正文:
{
"aggregateBy": [{
"dataTypeName": "com.google.step_count.delta",
"dataSourceId": "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps"
}],
"bucketByTime": { "durationMillis": 86400000 }, // This is 24 hours
"startTimeMillis": 1504137600000, //start time
"endTimeMillis": 1504310400000 // End Time
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7992 次 |
| 最近记录: |