Flutter集成Google Sign-In:Android端Web Client ID可用,Android Client ID报错
解决思路与排查步骤
1. 检查Identity Platform的Google Provider配置细节
- 确认Identity Platform中Google Provider的设置里,是否存在专门的Android客户端配置项(部分界面版本会单独要求填写Android Client ID和对应SHA-1),而非仅将其加入
Allowed client IDs列表。 - 验证自动创建的Web Client与你的Android Client是否绑定:检查Android Client的"Authorized redirect URIs",确认包含自动生成的Web Client的回调地址。
2. 重新校验Android Client ID的SHA-1密钥
- 重新生成调试密钥的SHA-1,确保与Credentials页面的记录完全一致:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 注意区分调试密钥和发布密钥,若近期更换过开发设备或密钥库,SHA-1可能已发生变化。
3. 确认Oauth同意屏幕的状态
- 若近期修改过Oauth同意屏幕配置,检查是否重新发布:处于"Testing"状态的同意屏幕会限制测试用户范围,若当前账号不在测试列表内也会触发错误10。
- 确保同意屏幕的应用名称、隐私政策链接等信息符合Google要求,无过期或违规内容。
4. 核对Flutter端google_sign_in的初始化配置
- 确保Android端初始化
GoogleSignIn时,正确传入Android Client ID:final GoogleSignIn _googleSignIn = GoogleSignIn( clientId: "你的Android Client ID", scopes: ['email', 'profile'], ); - 检查
android/app/src/main/AndroidManifest.xml是否添加了必要的meta-data:<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
5. 验证Credentials页面的Android Client配置
- 确认Android Client ID的包名与Flutter项目
android/app/build.gradle中defaultConfig下的applicationId完全一致,大小写、拼写均不能出错。 - 检查是否为Android Client添加了所有需要的SHA-1,比如使用第三方构建工具或测试服务时,可能需要额外添加对应环境的SHA-1。
关于"改用Web Client ID正常"的合理性
这种情况是合理的,Web Client ID的权限校验更宽松,默认允许Android端通过WebView模式完成授权,但这并非生产环境的推荐配置(安全性更低)。Android Client ID依赖严格的包名+SHA-1校验,只要任一校验项不匹配就会触发错误10。
内容的提问来源于stack exchange,提问作者Grey
相关产品推荐
相关产品推荐

