首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Google Fitness REST api检索步数数据?

如何从Google Fitness REST api检索步数数据?
EN

Stack Overflow用户
提问于 2014-11-27 04:51:01
回答 3查看 11.1K关注 0票数 13

自从我在我的Nexus5上安装了Google Fit应用程序后,它就一直在跟踪我的步数和步行时间。我想通过Google Fitness REST api (docs)检索这些信息,但我不知道如何从REST api获取这些数据。

我已经使用OAuth 2.0平台成功地列出了dataSources,但是我尝试过的示例都没有返回任何健康数据。我觉得我需要使用类似于Android SDK的DataReadRequest,但我不是在构建一个安卓应用程序--我只是想访问已经存储在Google Fit应用程序中的健身数据。

有没有可能获取Google Fit应用程序收集的数据?如果是这样,我如何使用REST api读取和聚合步数数据?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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},其中时间以自纪元起的纳秒为单位。

票数 7
EN

Stack Overflow用户

发布于 2016-08-13 19:31:15

我能够通过检查google php client来实现这一点,并注意到它们在GET请求的开始和结束时间后附加了额外的0-9。

使用上述答案中提到的相同GET请求格式:

代码语言:javascript
复制
https://www.googleapis.com/fitness/v1/users/{userId}/dataSources/{dataSourceId}/datasets/{datasetId}

下面是一个带有unix时间戳的例子(php的time()函数使用了这个)

代码语言:javascript
复制
https://www.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.step_count.delta:com.google.android.gms:estimated_steps/datasets/1470475368-1471080168

这是我得到的回应:

代码语言:javascript
复制
{
  "minStartTimeNs": "1470475368", 
  "maxEndTimeNs": "1471080168", 
  "dataSourceId":
  "derived:com.google.step_count.delta:com.google.android.gms:estimated_steps
}

但是,如果您在GET请求中添加了9个0,并将开始时间和结束时间附加到开始时间和结束时间,则您的请求如下所示:

代码语言:javascript
复制
https://www.googleapis.com/fitness/v1/users/me/dataSources/derived:com.google.step_count.delta:com.google.android.gms:estimated_steps/datasets/1470475368000000000-1471080168000000000

它起作用了--这是我得到的回应:

代码语言:javascript
复制
{
  "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可以。

这对我很有用,希望它能帮助一些人!

票数 6
EN

Stack Overflow用户

发布于 2017-09-01 17:23:40

我用下面的URL & body尝试了post方法。这将工作,请检查内联注释也。

使用URL:https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate方法: POST主体:

代码语言:javascript
复制
    {
  "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
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27158645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档