Android 12下Google OAuth返回invalid_grant,Android 11正常求助
invalid_grant(Bad request)的解决方法 针对你遇到的Android 12上使用react-native-app-auth进行Google OAuth认证时返回invalid_grant错误,且仅显示“Bad request”的问题,可按以下步骤排查解决:
为Android单独创建OAuth客户端ID
不要复用Web端的OAuth凭证,Google对Android和Web端的OAuth验证逻辑不同。进入Google Cloud Console的「API和服务」→「凭据」,创建Android类型的OAuth客户端ID,填写正确的包名和对应签名证书的SHA-1指纹(调试、发布、Play内部测试版本需分别对应各自的SHA-1),替换原配置中的Web端clientId。添加Android 12包可见性配置
Android 12限制了应用对其他应用的可见性,需在AndroidManifest.xml中添加Google Play服务的查询权限,确保能正常唤起Google认证界面:<queries> <package android:name="com.google.android.gms" /> </queries>校验redirectUri与配置匹配度
确保react-native-app-auth配置中的redirectUri和Google Cloud Console里Android客户端设置的回调地址完全一致(格式通常为你的包名:/oauth2callback),任何字符差异都可能导致验证失败。清理缓存并重启设备
清除设备上Google Play服务的缓存,同时清除你的应用缓存和数据,重启设备后重新测试认证流程,避免旧缓存数据干扰。确认签名证书指纹正确性
针对Play内部测试版本,需在Google Cloud Console中添加Play控制台「应用签名」页面的应用签名证书SHA-1(而非上传证书),确保证书指纹与认证请求中的签名匹配。
内容的提问来源于stack exchange,提问作者ewindsor

