Google oauth 403在google Fit REST API中为com.google.blood_pressure创建数据源时出错

Google oauth 403在google Fit REST API中为com.google.blood_pressure创建数据源时出错,google-oauth,google-fit,google-fit-api,Google Oauth,Google Fit,Google Fit Api,目标: 我有一个简单的web应用程序,我可以在其中提交血压和心率测量值。 现在,我想将这些测量数据提交到我的Google Fit帐户 我试过谷歌教程: OAuth2设置 我在现有的一个云控制台项目中创建了新凭据。然后使用以下作用域请求新的授权代码(项目处于测试状态,我的帐户注册为tester): 请求令牌将返回以下响应: { "access_token": "ya29.XXXXXXXXXXXXXXXX", "expires

目标:

我有一个简单的web应用程序,我可以在其中提交血压和心率测量值。 现在,我想将这些测量数据提交到我的Google Fit帐户

我试过谷歌教程:

OAuth2设置

我在现有的一个云控制台项目中创建了新凭据。然后使用以下作用域请求新的授权代码(项目处于测试状态,我的帐户注册为tester):

请求令牌将返回以下响应:

{
    "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\u rate.bpm,一个用于com.google.blood\u pressure)。 创建心率数据源按预期工作,但创建血压数据源会返回403权限\u拒绝错误:

请求(员额)

回应

{
    "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告诉我,范围fitness.blood_pressure.write缺失,但正如您所看到的,范围是为所使用的访问令牌提供的

注释

  • 我正在和邮递员一起测试所有的请求。稍后将使用Java/Groovy或PHP后端
  • 我还尝试了这两种数据类型的读写作用域
  • 我可以在“已连接的应用程序”下的Google Fit中看到我的应用程序具有两个写入范围
将数据类型名称更改为“fitness.blood\u pressure”,而不是“com.google.blood\u pressure”

身体将是这样的

{
    "dataStreamName": "BPA-BloodPressure",
    "type": "raw",
    "application": {
        "detailsUrl": "https://aaa.bbb.ccc",
        "name": "Blood Pressure App",
        "version": "1"
    },
    "dataType": {
        "name": "fitness.blood_pressure"
    }
}
将数据类型名称更改为“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"
    }
}

仔细检查您使用的访问令牌是否具有corect权限。仔细检查您使用的访问令牌是否具有corect权限。