我想使用Google的REST API获取我帐户的Fitness数据。为此,我发出2个后续电话。
获取https://www.googleapis.com/fitness/v1/users/me/dataSources。这将返回所有可用dataSource的列表,如[1]中所示。
POST https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate。 我在[1]的请求体中使用dataType name和dataStreamId来构建请求体[2]。
问题:第二个调用为包含空格的所有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
}
答案 0 :(得分:0)
您是否尝试使用像'\'这样的转义字符?
您的数据流ID看起来像
derived:com.google.activity.samples:com.google.android.gms:LGE:Nexus\ 5:c80045fc:detailed