为了账号安全,请及时绑定邮箱和手机立即绑定

使用 JS 向 Google Fit REST Api 添加会话和信息的问题

使用 JS 向 Google Fit REST Api 添加会话和信息的问题

慕村225694 2022-10-08 14:58:08
所以我对将 API 与 Js 一起使用是相当新的,但我很难理解 Google Fit API 的工作原理。我正在尝试通过添加会话和会话强度(心脏点)的一些数据来将新的锻炼数据添加到 API。我可以让会话正确显示,但是当我尝试创建数据源并为会话添加一个点时会遇到不断的错误。如果有人可以帮助我修复我的代码以实现此目的,或者可以将我引导到类似代码的更详尽示例,因为 API 文档似乎不太详细的示例等,将不胜感激。提前致谢。这是到目前为止我编写的 3 个 api 调用,一个用于创建 DataSource,一个用于 DataPoint,一个用于 Session。该会话正常工作,并为正确的活动添加了 1 小时的会话,但我无法让任何其他 API 请求正常工作。数据源 :``gapi.client.fitness.users.dataSources.create({             "userId":"me",             "resource": {                "application": {                "name": "LittleWorkouts"              },              "dataType": {"field":[{                "format": "floatPoint",                "name": "com.google.heart_minutes"              }],                "name": "com.google.heart_minutes"              },              "device": {                "manufacturer": "op",                "model": "6",                "type": "phone",                "uid": "1000019",                "version": "1"              },              "type": "raw"             }         })        .then(function(response) {                // Handle the results here (response.result has the parsed body).                console.log("Response", response);              },              function(err) { console.error("Execute error 1", err); });``数据点 :``    gapi.client.fitness.users.dataSources.datasets.patch({      "dataSourceId":"raw:com.google.heart_minutes:292824132082:op:6:1000019",      "userId": "me",      "datasetId": "1592087806561000000-1592287806561000000",      "resource": {  "minStartTimeNs": "1592087806561000000",  "maxEndTimeNs": "1592287806561000000",  "dataSourceId": "raw:com.google.heart_minutes:292824132082:op:6:1000019",  "point": [    {      "startTimeNanos": "1592087806561000000",      "endTimeNanos": "1592287806561000000",      "value": [        {          "fpVal": 89.1        }      ],      "dataTypeName": "com.google.heart_minutes"    }  ]}``错误信息{消息:“无法获取数据集的数据源:raw:com.google.heart_minutes:292824132082:op:6:1000019”,域:“global”,原因:“invalidArgument”}
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

看起来您可能试图为数据类型传递错误的字段:如果您想使用标准数据类型(如com.google.heart_minutes),您应该传递标准数据类型的确切字段(字段应称为“强度”);或者只是传递数据类型名称,后端将为您填写它们。

因此,如果您将数据类型更改为

"dataType": {"name": "com.google.heart_minutes"}

它应该工作。

然后,您需要使用从该请求返回的数据源 ID 来获取数据点。


查看完整回答
反对 回复 2022-10-08
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

太棒了,所以在评论中得到一些支持后,我有一些工作代码可以使用 3 个 API 调用添加一个包含来自先前定义的数据源的数据的新会话。第一个调用是创建数据源,只需要运行一次。然后第二个和第三个将数据点添加到数据集中并分别为锻炼创建一个新会话。这是最终的工作代码:


数据源:


/*

         gapi.client.fitness.users.dataSources.create({

             "userId":"me",

             "resource": {

                "application": {

                "name": "LittleWorkouts"

              },

              "dataType": {

                "name": "com.google.heart_minutes"

              },

              "device": {

                "manufacturer": "op",

                "model": "6",

                "type": "phone",

                "uid": "1000020",

                "version": "1"

              },

              "type": "raw"

             }

         })

        .then(function(response) {

                // Handle the results here (response.result has the parsed body).

                console.log("Response", response);

              },

              function(err) { console.error("Execute error 1", err); });

  */

数据和数据集:


gapi.client.fitness.users.dataSources.datasets.patch({

      "dataSourceId":"raw:com.google.heart_minutes:108881196053:op:6:1000020",

      "userId": "me",

      "datasetId": z,

      "resource": {

  "minStartTimeNs": workoutStartTime * 1000000,

  "maxEndTimeNs": workoutEndTime * 1000000,

  "dataSourceId": "raw:com.google.heart_minutes:108881196053:op:6:1000020",

  "point": [

    {

        "originDataSourceId": "raw:com.google.heart_minutes:108881196053:op:6:1000020",

      "value": [

        {

          "fpVal": 8

        }

      ],

      "dataTypeName": "com.google.heart_minutes",

      "endTimeNanos": workoutEndTime * 1000000,

      "startTimeNanos": workoutStartTime * 1000000,

    }

  ]

}

    })

        .then(function(response) {

                // Handle the results here (response.result has the parsed body).

                console.log("Response", response);

              },

              function(err) { console.error("Execute error 2", err); });

会议:


gapi.client.fitness.users.sessions.update({

            "userId":"me",

            "sessionId": id,

            "id": id,

            "name": "Morning Workout",

            "description": "A very intense workout",

            "startTimeMillis": workoutStartTime,

            "endTimeMillis": workoutEndTime,

            "version": 1,

            "lastModifiedToken": "exampleToken",

            "application": {

                "detailsUrl": "http://example.com",

                "name": "LittleWorkouts",

                "version": "1.0"

            },

            "activityType": 21,

            "activeTimeMillis": workoutEndTime - workoutStartTime

            }).then((res) => {console.log(res)});

            console.log('res')


查看完整回答
反对 回复 2022-10-08
  • 2 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信