iOS端Firebase Google登录报错Error 400: invalid_request求助
问题重现
打开网页登录时出现:
无法验证此应用的真实性,请联系开发者。Token验证失败。
Error 400: invalid_request
已排查项
- 核对
GoogleService-Info.plist的CLIENT_ID、REVERSED_CLIENT_ID与Google Cloud配置一致 - Xcode中URL Type已匹配
REVERSED_CLIENT_ID - 移除并重新添加Firebase iOS应用,问题未解决
进一步排查方案
修正代码中的AccessToken错误
你的代码里创建Firebase凭证时,错误地将idToken重复传给了accessToken参数,这是核心问题之一:
原错误代码:let credential = GoogleAuthProvider.credential(withIDToken: idTokenString, accessToken: signInResult?.user.idToken?.tokenString ?? "")正确写法:
let credential = GoogleAuthProvider.credential(withIDToken: idTokenString, accessToken: authentication.accessToken.tokenString)注意:
accessToken需要取signInResult?.user.accessToken.tokenString,而非idToken。核对Google Cloud OAuth客户端ID的Bundle ID
进入Google Cloud控制台「API和服务」→「凭据」,找到对应的iOS客户端ID,确认Bundle ID与Xcode项目中的CFBundleIdentifier完全一致(大小写、特殊字符都不能差)。确认Google登录API已启用
在Google Cloud控制台的API库中搜索「Google登录」,确保该API状态为「已启用」,未启用会直接导致验证失败。检查重定向URI配置
在Google Cloud的iOS客户端ID详情页,确认「授权重定向URI」列表中包含com.googleusercontent.apps.你的CLIENT_ID前缀:/oauth2callback,如果没有,手动添加该URI。添加证书指纹(关键)
如果你的App使用了签名(无论是Debug还是Release),需要将对应证书的SHA-1指纹添加到Google Cloud的凭据配置中:- 获取证书SHA-1:可通过Xcode「Signing & Capabilities」→「Team」查看证书,或用终端命令提取
- 进入Google Cloud控制台「API和服务」→「凭据」,找到对应的项目,添加SHA-1指纹到iOS客户端ID或项目的OAuth同意屏幕配置中
清理缓存与重建
- 卸载设备上的App,清理Xcode缓存(
Cmd+Shift+K),重新构建运行 - 若使用真机测试,可尝试清除Google App的缓存,或用隐私模式打开登录页面测试缓存问题
- 卸载设备上的App,清理Xcode缓存(
内容的提问来源于stack exchange,提问作者jdanvz

