克隆Firebase应用更换项目后,Google登录报access_token受众不符错误
解决Firebase Google登录"Invalid Idp Response: access_token audience is not for this project"错误
针对你遇到的仅Google登录异常、邮箱密码登录正常的情况,问题核心是Google OAuth返回的access_token受众(audience)与当前Firebase项目不匹配,以下是具体排查和修复步骤:
检查GCP OAuth客户端ID配置
Firebase的Google登录依赖关联Google Cloud Platform(GCP)项目的OAuth 2.0客户端ID,克隆项目更换Firebase账号后,需确认:- 进入新Firebase项目设置→"服务"标签,点击"Google Cloud Platform"链接跳转至对应GCP项目
- 在GCP中搜索"API和服务"→"凭据",找到对应平台(Web/Android/iOS)的客户端ID
- 验证授权重定向URI是否与当前应用匹配:Web应用需为
https://<新项目ID>.firebaseapp.com/__/auth/handler;Android/iOS需为包名+SHA1对应的自动生成URI - 确认未误使用旧项目的OAuth客户端ID,比如代码中硬编码了旧ID而非从配置文件读取
彻底替换并同步配置文件
确保新的google_services.json(Android)或GoogleService-Info.plist(iOS)完全覆盖旧文件:- 删除旧配置文件,从新Firebase项目重新下载对应平台的配置文件
- Android执行
./gradlew clean清理构建缓存后同步Gradle;iOS使用Command+Shift+K清理Xcode缓存并重新构建 - 打开配置文件,检查
oauth_client字段中的client_id是否属于新Firebase项目
验证Firebase Auth Google登录提供商配置
进入新Firebase项目的Authentication→登录方法→Google:- 确认已启用Google登录,且关联的GCP项目为当前Firebase对应的项目
- 核对"Web SDK配置"中的客户端ID,确保与GCP凭据中的客户端ID一致
排查代码中的硬编码配置
检查代码中是否存在硬编码的OAuth信息:- Android中,初始化
GoogleSignInOptions时,确保使用getString(R.string.default_web_client_id)(该值由google_services.json自动生成),而非手动填写旧项目的client_id - Web端检查
firebase.auth.GoogleAuthProvider初始化时,是否传入了旧的client_id
- Android中,初始化
清除应用缓存或重新安装
旧应用可能缓存了旧的OAuth会话数据,导致请求携带错误的token:卸载应用后重新安装,或清除应用存储数据后重试
内容的提问来源于stack exchange,提问作者NeedHelpWithGoogleSignIn
相关产品推荐
相关产品推荐

