目标:
我有一个简单的 Web 应用程序,我可以在其中提交我的血压和心率测量值。现在我想将这些测量结果提交到我的 Google Fit 帐户。
我试过谷歌教程:https ://developers.google.com/fit/scenarios/write-bp-data
OAuth2 设置
我在现有的 Cloud Console 项目之一中创建了新凭据。然后使用以下范围请求新的授权码(该项目处于测试状态,我的帐户已注册为测试员):
- https://www.googleapis.com/auth/fitness.blood_pressure.write
- https://www.googleapis.com/auth/fitness.heart_rate.write
请求令牌会返回以下响应:
{
"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"
}
如您所见,两个写入范围都被授予。此外,如果我检查我的 Google 帐户中的权限,则会设置两个范围。
创建数据源
现在我创建了两个数据源(一个用于 com.google.heart_rate.bpm,一个用于 com.google.blood_pressure)。创建心率数据源按预期工作,但创建血压数据源返回403 PERMISSION_DENIED错误:
请求(发布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"
}
}
Google Fit REST API 告诉我缺少 Scope Fitness.blood_pressure.write,但正如您所见,为使用的访问令牌提供了 Scope。
笔记
- 我正在与 Postman 一起测试所有请求。稍后将使用 Java/Groovy 或 PHP 后端。
- 我还尝试了两种数据类型的读写范围。
- 我可以在“连接的应用程序”下的 Google Fit 中看到我的应用程序具有两个写入范围。