Firebase Auth跨设备报错unknown status code:17499 请求被拦截
Firebase Auth 手机号认证报错17499:Android客户端请求被拦截 解决方案
错误日志参考
E/FirebaseAuth: [SmsRetrieverHelper] SMS verification code request failed: unknown status code: 17499 Requests from this Android client application ____package name_____ are blocked. E/AuthUI: A sign-in error occurred. com.google.firebase.FirebaseException: An internal error has occurred. [ Requests from this Android client application ___package name_____ are blocked. ] at com.google.android.gms.internal.firebase-auth-api.zzti.zza(com.google.firebase:firebase-auth@@21.0.3:4) at com.google.android.gms.internal.firebase-auth-api.zzuc.zza(com.google.firebase:firebase-auth@@21.0.3:1) at com.google.android.gms.internal.firebase-auth-api.zzud.run(com.google.firebase:firebase-auth@@21.0.3:3) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:226) at android.app.ActivityThread.main(ActivityThread.java:7178) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:503) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)

排查解决步骤
按优先级从高到低逐一验证:
第一步:确认SHA指纹配置全量正确且配置文件同步更新
新增SHA后触发报错90%是这一步的问题:- 所有开发人员必须导出自己本地实际使用的签名文件指纹,不要用错:debug签名默认路径为用户目录下
.android/debug.keystore,默认别名androiddebugkey,默认密码android;release签名用自己正式的keystore文件即可。 - 用keytool命令导出正确的SHA1、SHA256值,不要从APK反编译结果、IDE其他面板抄错值:
# 导出debug签名指纹示例 keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 把所有成员的debug、release签名的SHA1、SHA256全部添加到Firebase控制台的Android应用配置页,不要漏加任何一个。
- 加完所有指纹后,必须重新下载最新的
google-services.json文件,替换掉项目app模块目录下的旧文件,执行clean项目后重新编译,不要用缓存的旧配置。 - 测试前先卸载设备上之前安装的旧APK,避免系统缓存旧的签名校验信息。
- 所有开发人员必须导出自己本地实际使用的签名文件指纹,不要用错:debug签名默认路径为用户目录下
第二步:检查API key的应用限制配置
打开对应Firebase项目绑定的Google Cloud后台,进入「API和服务-凭证」页面,找到Android应用当前使用的API key:- 如果API key开启了Android应用限制,必须把所有签名对应的「SHA1+包名」组合全部添加到允许列表,漏加任何一个签名的指纹都会直接触发17499拦截。
- 测试阶段如果嫌配置麻烦,可以暂时把API key的应用限制改成「无」,验证功能正常后再逐步加回限制,定位是否是这部分配置导致的问题。
第三步:排查Firebase反滥用风控拦截
- 测试阶段建议把所有测试用的手机号、测试设备对应的信息加到Firebase Authentication的测试白名单中,避免短时间重复请求验证码触发反滥用拦截,临时拦截一般1-2小时会自动解除。
- 如果开启了Firebase App Check,必须把所有开发环境的debug签名、调试用的模拟器指纹加到App Check的调试允许列表,否则App Check会直接拦截未认证的客户端请求,抛出同类错误。
第四步:修复依赖版本和配置冲突
你当前使用的firebase-auth:21.0.3存在已知的配置缓存bug:- 把项目根目录build.gradle中的google-services插件升级到最新稳定版,不要使用4.3.0之前的旧版本。
- 建议引入Firebase BOM统一管理所有Firebase依赖版本,把Auth、UI相关依赖升级到最新稳定版,避免旧版本的签名校验逻辑异常。
- 检查多渠道打包配置,确保不同包名的渠道没有混用错误的
google-services.json文件,不要在代码中硬编码google_client_id,所有配置从json自动生成的资源文件读取。
内容的提问来源于stack exchange,提问作者Dr. Sa.M.
相关产品推荐
相关产品推荐

