猿问

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

所以我对将 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”}


慕村225694
浏览 134回答 2
2回答

qq_花开花谢_0

看起来您可能试图为数据类型传递错误的字段:如果您想使用标准数据类型(如com.google.heart_minutes),您应该传递标准数据类型的确切字段(字段应称为“强度”);或者只是传递数据类型名称,后端将为您填写它们。因此,如果您将数据类型更改为"dataType": {"name": "com.google.heart_minutes"}它应该工作。然后,您需要使用从该请求返回的数据源 ID 来获取数据点。

潇潇雨雨

太棒了,所以在评论中得到一些支持后,我有一些工作代码可以使用 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')
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答