请求Google Fit com.google.step_count.delta接口返回status code 401错误排查
错误触发原因
- 核心直接原因:Authorization请求头格式非法。从报错中的请求配置可以看到,
authorization字段值为Bearerya29.a0ARrdaM8Rx7JTevizLGoMkJYBqAGba27LtAQKbnodcgXsqkUFVyBFgm4ZNAvci84LbiowSnmpNxFhGCKcq1UKk6819L37kd1HPPbeXNsrmrbPjZu6pM7Jsw9p7xIwsMJLYZFrg4lNkgoPbMOFA5ZIlY021C0C,OAuth 2.0 规范要求Bearer标识和访问令牌之间必须有空格,你这里直接将二者拼接,导致接口无法识别合法令牌直接返回401。 - 其他可能触发原因:
- 访问令牌已过期:Google OAuth 2.0颁发的访问令牌默认有效期仅1小时,过期后调用接口会直接返回401。
- 权限范围不足:OAuth授权流程中未申请读取步数数据对应的
fitness.activity.read权限,接口拒绝无权限访问。 - 应用配置异常:Google Cloud控制台中未启用Fitness API,或者测试阶段未将当前调用的用户账号加入测试白名单。
- 用户授权失效:用户主动取消了应用读取健身数据的授权,或者授权流程未完成就发起了接口调用。
解决方案
- 优先修复请求头格式:调整Authorization头的拼接逻辑,确保
Bearer(末尾带空格)和访问令牌分开拼接,修正后格式为Authorization: Bearer ya29.a0ARrdaM8Rx7JT...。 - 校验令牌有效性:如果修复格式后仍报错,先验证当前令牌是否在有效期内,过期的话调用刷新令牌接口重新获取有效访问令牌。
- 补充授权权限:检查OAuth授权逻辑中是否包含
fitness.activity.read作用域,缺少的话重新走用户授权流程申请对应权限。 - 核对应用配置:确认Google Cloud控制台中Fitness API已开启,测试阶段将使用的谷歌账号添加到应用的测试用户列表中。
- 确认用户授权状态:引导用户重新完成授权流程,确保应用获得健身数据的访问权限。
内容的提问来源于stack exchange,提问作者Abhishek Mishra
相关产品推荐
相关产品推荐

