Google Fit REST API - 带有空格的dataStreamId会导致错误

时间:2017-11-17 14:52:05

标签: rest api oauth-2.0 google-fit oauth2-playground

我想使用Google的REST API获取我帐户的Fitness数据。为此,我发出2个后续电话。

  1. 获取https://www.googleapis.com/fitness/v1/users/me/dataSources。这将返回所有可用dataSource的列表,如[1]中所示。

  2. POST https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate。 我在[1]的请求体中使用dataType name和dataStreamId来构建请求体[2]。

  3. 问题:第二个调用为包含空格的所有dataSourceIds返回错误[3],尽管它们在第一个请求中以这种方式返回。在代码示例中有空格,因为dataSourceId包含电话型号" Nexus 5"。如果没有空格,则请求成功且没有错误。

    我已经尝试用其他东西替换空间("%20"或" _"或" +")但没有任何帮助。这是API中的错误还是我做了一些根本错误的事情?

    提前致谢!

    编辑1: 顺便说一句,我正在使用Google的oauth-playground,并选择了所有的健身范围。 https://developers.google.com/oauthplayground/

    编辑2: 在代码示例[2]中,我使用了错误的dataTypeName。是" activity_confidence"但应该是" com.google.activity.samples"。

    [1] GET回复

    $('#bind').html('Sliding!')
    

    [2] POST body

        {
          "dataSource": [
            {
              "application": {
                "packageName": "com.google.android.gms"
              },
              "dataQualityStandard": [
              ],
              "dataStreamId": "derived:com.google.activity.samples:com.google.android.gms:LGE:Nexus 5:c80045fc:detailed",
              "dataStreamName": "detailed",
              "dataType": {
                "field": [
                  {
                    "format": "map",
                    "name": "activity_confidence"
                  }
                ],
                "name": "com.google.activity.samples"
              },
              "device": {...},
              "type": "derived"
            },
            ...
          ]
        }
    

    [3] POST错误消息

        {
          "aggregateBy": [
            {
              "dataSourceId": "derived:com.google.activity.samples:com.google.android.gms:LGE:Nexus 5:c80045fc:detailed",
              "dataTypeName": "com.google.activity.samples"
            }
          ],
          "endTimeMillis": 1511132400000,
          "startTimeMillis": 1510268400000
        }
    

1 个答案:

答案 0 :(得分:0)

您是否尝试使用像'\'这样的转义字符?

您的数据流ID看起来像

derived:com.google.activity.samples:com.google.android.gms:LGE:Nexus\ 5:c80045fc:detailed