Android接入Google Fit报ApiException 5000需OAuth授权错误如何解决
错误原因与解决方案
你遇到的两个错误分别对应:
ApiException: 4为通用权限校验失败ApiException: 5000为明确缺少用户OAuth授权许可
结合你的代码和配置流程,排查点如下:
- Scope不匹配问题
你代码中请求的权限是血糖读写权限Scopes.FITNESS_BLOOD_GLUCOSE_READ_WRITE,但后续accessGoogleFit()方法读取的是步数数据,需要额外申请活动类权限,你需要在权限请求时补充Scopes.FITNESS_ACTIVITY_READ或FITNESS_ACTIVITY_READ_WRITE,否则步数数据的读取请求会因为缺少对应Scope被拒。 - 权限请求时序逻辑错误
你的代码中发起登录跳转startActivityForResult()后,立刻再次执行权限判断,此时用户还未完成授权操作,第二次的权限判断必然返回无权限,直接发起重复的权限请求。你需要将第二次权限校验、accessGoogleFit()调用逻辑,放到onActivityResult回调中,等登录/授权请求的结果返回后再执行。 - OAuth同意屏幕配置缺失
- 确认你在Google Cloud后台的OAuth同意屏幕配置中,已经把用到的所有权限(血糖读写、活动数据读取)都添加到了权限列表中
- 如果你的应用还未通过Google审核发布,必须将测试用到的谷歌账号添加到OAuth同意屏幕的「测试用户」列表中,未在列表内的账号无法完成授权
- 确认后台填写的应用SHA1指纹与你当前打包使用的签名指纹一致,debug和release签名的SHA1值不同,不要混淆填写,同时保证应用包名与后台登记的完全一致
- 冗余代码优化
你不需要同时使用GoogleSignInClient登录和GoogleSignIn.requestPermissions两种请求方式,二选一即可,避免重复弹出授权窗口。
内容的提问来源于stack exchange,提问作者T_TR_ZCS
相关产品推荐
相关产品推荐

