【问题标题】:Google fit permission problemsGoogle fit 权限问题
【发布时间】:2020-05-31 06:08:36
【问题描述】:

我想获得一些有关 google fit rest Rest API 的技术帮助。

我正在制作一个需要访问位置信息的应用程序,作为对我的请求的响应,我得到了这个 json。

{
  "access_token": "ya29.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 
  "scope": "https://www.googleapis.com/auth/fitness.activity.read https://www.googleapis.com/auth/fitness.location.write https://www.googleapis.com/auth/fitness.location.read https://www.googleapis.com/auth/fitness.body.read", 
  "token_type": "Bearer", 
  "expires_in": 3600, 
  "refresh_token": "1/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

所以使用 access_token,我提出了以下请求,它可以工作

https://www.googleapis.com/fitness/v1/users/me/dataset:aggregate

请求正文:

{
"startTimeMillis":1543682285000,
"endTimeMillis":1543941485000,
"aggregateBy: [
{ 
  "dataSourceId":"derived:com.google.calories.expended:com.google.android.gms:merge_calories_expended",
  "dataTypeName":"com.google.calories.expended"
}
],"bucketByTime":{"durationMillis":259200000}
}

我确实得到了正确的回应

但是当完成以下主体时(dataSourceId 和 dataTypeName 已更改)

{
"startTimeMillis":1543682283000,
"endTimeMillis":1543941483000,
"aggregateBy":[
{
  "dataSourceId":"derived:com.google.location.sample:com.google.android.gms:merge_location_samples",
  "dataTypeName":"com.google.location.sample"}
],"bucketByTime":{"durationMillis":259200000}
}

我明白了

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "forbidden",
    "message": "No permission to read data for this private data source."
   }
  ],
  "code": 403,
  "message": "No permission to read data for this private data source."
 }
}

还尝试使用所有健身范围(读取和写入):

 "scope": "https://www.googleapis.com/auth/fitness.activity.write
           https://www.googleapis.com/auth/fitness.blood_pressure.read
           https://www.googleapis.com/auth/fitness.blood_pressure.write
           https://www.googleapis.com/auth/fitness.reproductive_health.write
           https://www.googleapis.com/auth/fitness.activity.read
           https://www.googleapis.com/auth/fitness.reproductive_health.read
           https://www.googleapis.com/auth/fitness.nutrition.write
           https://www.googleapis.com/auth/fitness.body_temperature.write
           https://www.googleapis.com/auth/fitness.body_temperature.read
           https://www.googleapis.com/auth/fitness.nutrition.read
           https://www.googleapis.com/auth/fitness.oxygen_saturation.write
           https://www.googleapis.com/auth/fitness.body.write
           https://www.googleapis.com/auth/fitness.body.read
           https://www.googleapis.com/auth/fitness.oxygen_saturation.read
           https://www.googleapis.com/auth/fitness.blood_glucose.write
           https://www.googleapis.com/auth/fitness.location.write
           https://www.googleapis.com/auth/fitness.location.read
           https://www.googleapis.com/auth/fitness.blood_glucose.read"

【问题讨论】:

  • 从您分享的错误来看,您很可能无权或无权访问数据源。您是否还尝试清除任何代理?另外,您是否尝试过通过 Android 访问 Wear OS 的文档?

标签: google-fit google-fit-sdk


【解决方案1】:

作为 Google 不断努力改善数据隐私和安全性的一部分,我们正在更新 Google Fit API。 2018 年 11 月,我们更改了通过适用于 Android 的 Fit API 和 Fit REST API 读取位置样本的方式。

今后,应用程序将只能读取它们已写入平台的位置样本。由于merge_location_samples 流是由 Fit 平台内部编写的,因此第三方开发者无法再访问它。

如果您的应用程序需要获取位置信息,我们建议您使用标准方法来获取用户设备上的位置信息(请参阅here)。

【讨论】:

  • 是否适用于所有类型的内部 Fit 平台数据或仅适用于位置?我对身体传感器数据的可用性特别感兴趣。
  • @artBCode 人体传感器类型保持公开。您应该能够使用适当的 OAuth 范围读取它们。
  • 感谢您的回复,安迪。如果可以的话:我正在使用 Google Fit API 构建一个应用程序,我正在尝试获取实时传感器数据。获得正确的 ID 客户端后,该应用程序在 android 手机上运行良好。当我尝试连接到 Wear OS 2.x 上的传感器 API 时,我收到以下错误:“com.google.android.gms.common.api.ApiException: 17: API: Fitness.SENSORS_CLIENT 在此设备上不可用。 "您认为这可能与权限相关(特定于 WearOS)吗?该应用甚至在 Google Fit 应用中显示为已连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多