自从我在我的Nexus5上安装了Google Fit应用程序后,它就一直在跟踪我的步数和步行时间。我想通过Google Fitness REST api (docs)检索这些信息,但我不知道如何从REST api获取这些数据。
我已经使用OAuth 2.0平台成功地列出了dataSources,但是我尝试过的示例都没有返回任何健康数据。我觉得我需要使用类似于Android SDK的DataReadRequest,但我不是在构建一个安卓应用程序--我只是想访问已经存储在Google Fit应用程序中的健身数据。
有没有可能获取Google Fit应用程序收集的数据?如果是这样,我如何使用REST api读取和聚合步数数据?
发布于 2014-11-28 03:54:59
事实证明,答案终究在docs中。以下是请求的格式。
GET https://www.googleapis.com/fitness/v1/users/{userId}/dataSources/{dataSourceId}/datasets/{datasetId}
唯一支持的{userId}值是me (带身份验证)。
通过运行different request可以获得{dataSourceId}的可能值。
我遗漏了一点,{datasetId}实际上不是一个ID,而是你定义你感兴趣的时间跨度的地方。该变量的格式为{startTime}-{endTime},其中时间以自纪元起的纳秒为单位。
发布于 2016-08-13 19:31:15
我能够通过检查google php client来实现这一点,并注意到它们在GET请求的开始和结束时间后附加了额外的0-9。
使用上述答案中提到的相同GET请求格式:
https://www.googleapis.com/fitness/v1/users/{userId}/dataSources/{dataSourceId}/datasets/{datasetId}下面是一个带有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这是我得到的回应:
{
"minStartTimeNs": "1470475368",
"maxEndTimeNs": "1471080168",
"dataSourceId":
"derived:com.google.step_count.delta:com.google.android.gms:estimated_steps
}但是,如果您在GET请求中添加了9个0,并将开始时间和结束时间附加到开始时间和结束时间,则您的请求如下所示:
https://www.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.step_count.delta:com.google.android.gms:estimated_steps/datasets/1470475368000000000-1471080168000000000它起作用了--这是我得到的回应:
{
"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"
}, 回复要长得多,但为了这篇文章,我把它删节了。因此,在将datasets参数传递到请求中时:
1470475368-1471080168不能工作,但1470475368000000000-1471080168000000000可以。
这对我很有用,希望它能帮助一些人!
发布于 2017-09-01 17:23:40
我用下面的URL & body尝试了post方法。这将工作,请检查内联注释也。
使用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
}https://stackoverflow.com/questions/27158645
复制相似问题