升级Firebase Auth UI后Google登录报错求助
看起来你在升级FirebaseUI Auth到4.0.0版本后,遇到了Google登录抛出Code 10的异常,而Facebook和邮箱登录都正常。结合你提供的错误日志、依赖配置和代码,这个问题大概率和依赖版本冲突或者OAuth客户端配置缺失有关,下面是具体的排查和修复步骤:
1. 修复依赖版本不匹配的问题
FirebaseUI Auth 4.0.0对依赖的版本有严格要求,你当前使用的play-services-auth:15.0.1版本过低,和firebase-ui-auth:4.0.0不兼容。根据FirebaseUI官方的兼容列表,4.0.0版本需要搭配play-services-auth:16.0.0+,和你使用的firebase-auth:16.0.1保持一致是最稳妥的选择。
修改你的app级build.gradle中的依赖:
// 替换旧的play-services-auth版本 implementation 'com.google.android.gms:play-services-auth:16.0.1' implementation 'com.firebaseui:firebase-ui-auth:4.0.0' implementation 'com.google.firebase:firebase-auth:16.0.1'
修改后执行Clean Project和Rebuild Project,确保依赖同步正确。
2. 检查SHA-1指纹与OAuth客户端ID配置
Code 10错误的核心原因通常是OAuth客户端验证失败,这需要你确认以下几点:
- 登录Firebase控制台,进入项目设置 -> 应用页面,确保你已经添加了debug和release版本的SHA-1证书指纹(可以通过
keytool命令生成,或者在Android Studio的Signing Report中查看)。 - 登录Google Cloud Console,找到OAuth 2.0客户端ID管理页面,检查对应你应用包名的客户端ID是否存在,并且包名、SHA-1指纹和你的应用完全匹配。
- 如果修改了指纹或包名,务必重新下载
google-services.json文件并替换到你的app目录下,然后再次同步项目。
3. 验证Google Identity Toolkit API是否启用
虽然FirebaseUI会自动处理大部分API配置,但有时候需要手动启用相关API:
- 登录Google Cloud Console,搜索并启用Google Identity Toolkit API。
- 确认Firebase项目和Cloud Console项目是关联的(可以在Firebase项目设置 -> 集成 -> Google Cloud Platform中查看关联状态)。
4. 优化登录代码中的Google Provider配置
你的登录代码中Google Provider的配置基本没问题,但可以尝试显式指定ID Token来确保配置正确:
selectedProviders.add(new AuthUI.IdpConfig.GoogleBuilder() .requestIdToken(getString(R.string.default_web_client_id)) // 添加这一行 .build());
default_web_client_id可以从google-services.json文件的client -> oauth_client -> client_id(类型为web的那一项)中获取,或者在Firebase控制台的项目设置 -> 应用 -> Web应用配置中找到。
完成以上步骤后,重新测试Google登录功能,应该就能解决Code 10的错误了。
内容的提问来源于stack exchange,提问作者brndn

