Google Fit REST API - 带有空格的 dataStreamId 导致错误
Posted
技术标签:
【中文标题】Google Fit REST API - 带有空格的 dataStreamId 导致错误【英文标题】:Google Fit REST API - dataStreamId with whitespace results in error 【发布时间】:2018-05-01 09:26:39 【问题描述】:我想使用 Google 的 REST API 来获取我帐户的健身数据。为此,我发出 2 个后续调用。
获取https://www.googleapis.com/fitness/v1/users/me/dataSources。这将返回所有可用数据源的列表,如 [1] 中所示。
发布https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate。 我使用来自 [1] 的请求正文中的 dataType 名称和 dataStreamId 来构建请求正文 [2]。
问题:第二次调用为所有包含空格的 dataSourceId 返回错误 [3],尽管它们在第一次请求中完全以这种方式返回。在代码示例中有空格,因为 dataSourceId 包含手机型号“Nexus 5”。如果没有空格,则请求成功且没有错误。
我已经尝试用其他东西(“%20”或“_”或“+”)替换空格,但没有任何帮助。这是 API 中的错误还是我做错了什么?
提前致谢!
编辑 1: 顺便说一句,我正在使用谷歌的 oauth-playground 并选择了所有的健身范围。 https://developers.google.com/oauthplayground/
编辑 2: 在代码示例 [2] 中,我使用了错误的 dataTypeName。是“activity_confidence”,但应该是“com.google.activity.samples”。
[1] 获取响应
"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"
,
...
]
[2] 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
[3] POST 错误消息
"error":
"code": 400,
"errors": [
"domain": "global",
"message": "datasource not found: derived:com.google.activity.samples:com.google.android.gms:LGE:Nexus 5:c80045fc:detailed",
"reason": "invalidArgument"
],
"message": "datasource not found: derived:com.google.activity.samples:com.google.android.gms:LGE:Nexus 5:c80045fc:detailed"
【问题讨论】:
@schnuchel,你有想过这个吗?我也有同样的问题 抱歉,仍然无法弄清楚如何让它工作...... 抱歉,仍然无法弄清楚如何让它工作...... Google Fit 的 API 很差 :( 谷歌难得的错过 【参考方案1】:您是否尝试过使用像“\”这样的转义字符?
您的数据流 ID 如下所示
derived:com.google.activity.samples:com.google.android.gms:LGE:Nexus\ 5:c80045fc:detailed
【讨论】:
以上是关于Google Fit REST API - 带有空格的 dataStreamId 导致错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使用v3 rest api从google驱动器下载文件?