React Native集成Google Fit遇Auth Denied授权失败问题求助
React Native Google Fit 授权返回"AUTH DENIED"的排查方案
以下是可能导致授权失败的常见原因及对应解决办法:
Google Cloud Console 配置遗漏
- 确认已在Google Cloud Console中启用Fit API,并创建了匹配当前应用的OAuth 2.0客户端ID,关联的Android包名和SHA-1指纹必须完全正确。
- 检查OAuth同意屏幕的配置:已添加
FITNESS_ACTIVITY_READ到授权范围列表,且你的测试账号已被加入测试用户列表(哪怕是自己的账号也必须添加,否则会被拦截授权)。
SHA-1 指纹不匹配
- 核对开发/发布密钥的SHA-1指纹与Google Cloud Console中客户端ID配置的指纹是否一致。开发环境可通过以下命令获取debug密钥指纹:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 若使用了自定义签名密钥,必须将对应指纹也添加到控制台的客户端ID配置中。
- 核对开发/发布密钥的SHA-1指纹与Google Cloud Console中客户端ID配置的指纹是否一致。开发环境可通过以下命令获取debug密钥指纹:
权限范围或导入问题
- 确认
Scopes.FITNESS_ACTIVITY_READ是正确导入的库常量,而非自定义字符串,避免拼写错误。 - 可临时尝试添加读写权限组合(如
[Scopes.FITNESS_ACTIVITY_READ, Scopes.FITNESS_ACTIVITY_WRITE])测试授权是否成功,排除单一范围的配置问题。
- 确认
Android 清单配置错误
- 确保
AndroidManifest.xml中已添加必要权限:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" /> - 检查是否正确配置Google Play服务版本的meta-data:
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
- 确保
项目缓存或依赖兼容性问题
- 确认react-native-google-fit库版本与当前React Native版本兼容,建议使用库的最新稳定版。
- 执行
cd android && ./gradlew clean清理Android项目缓存,然后重新构建应用。
授权调用时机问题
- 你的
useEffect未设置依赖数组,会导致组件重复渲染时多次触发授权流程,可能引发异常。修改为仅在组件挂载时调用一次:useEffect(() => { const options = { scopes: [Scopes.FITNESS_ACTIVITY_READ], }; GoogleFit.authorize(options) .then((authResult) => { if (authResult.success) { console.log("AUTH SUCCESS"); } else { console.log("AUTH DENIED"); } }) .catch(() => { console.log("AUTH_ERROR"); }); }, []); // 添加空依赖数组
- 你的
内容的提问来源于stack exchange,提问作者Hyejung
相关产品推荐
相关产品推荐

