目标:
我有一个简单的网络应用程序,在那里我提交我的血压和心率测量。现在我想把这些测量结果提交给我的Google帐户。
我试过谷歌教程:https://developers.google.com/fit/scenarios/write-bp-data
OAuth2安装
我在一个现有的云控制台项目中创建了新的凭据。然后使用以下范围请求一个新的授权代码(项目处于测试状态,我的帐户注册为测试人员):
请求令牌将返回以下响应:
{
"access_token": "ya29.XXXXXXXXXXXXXXXX",
"expires_in": 3599,
"refresh_token": "1//XXXXXXXXXXXXXXXX",
"scope": "https://www.googleapis.com/auth/fitness.heart_rate.write https://www.googleapis.com/auth/fitness.blood_pressure.write",
"token_type": "Bearer"
}如您所见,这两个写入作用域都被授予。此外,如果我检查我的谷歌帐户的权限,这两个作用域将被设置。
创建dataSource
现在我创建了两个dataSources (一个用于com.google.heart_rate.bpm,另一个用于com.google.blood_pressure)。创建心率dataSource按预期工作,但为血压创建dataSource将返回403 PERMISSION_DENIED错误:
请求(POST https://www.googleapis.com/fitness/v1/users/me/dataSources)
{
"dataStreamName": "BPA-BloodPressure",
"type": "raw",
"application": {
"detailsUrl": "https://aaa.bbb.ccc",
"name": "Blood Pressure App",
"version": "1"
},
"dataType": {
"name": "com.google.blood_pressure"
}
}响应
{
"error": {
"code": 403,
"message": "Scope not included to modify data of type com.google.blood_pressure. Possible scopes: https://www.googleapis.com/auth/fitness.blood_pressure.write",
"errors": [
{
"message": "Scope not included to modify data of type com.google.blood_pressure. Possible scopes: https://www.googleapis.com/auth/fitness.blood_pressure.write",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}告诉我,范围fitness.blood_pressure.write丢失了,但是正如您所看到的,这个作用域是为使用的访问令牌提供的。
Notes
。
发布于 2021-04-09 12:52:54
将dataType名称改为"fitness.blood_pressure“而不是"com.google.blood_pressure”
身体会是这样的。
{
"dataStreamName": "BPA-BloodPressure",
"type": "raw",
"application": {
"detailsUrl": "https://aaa.bbb.ccc",
"name": "Blood Pressure App",
"version": "1"
},
"dataType": {
"name": "fitness.blood_pressure"
}
}https://stackoverflow.com/questions/65548122
复制相似问题