Firebase短信自动填充上架Google Play后失效,求解决方案
解决Firebase OTP自动填充在Google Play发布后失效的问题
核心原因
Google Play App Signing会替换你上传的签名密钥,导致Firebase生成的哈希码与Play商店分发的应用签名哈希不匹配,因此短信中的哈希被替换为应用名称,自动填充无法识别。
可行解决方案
1. 添加Play商店签名的哈希码到Firebase
- 登录Google Play控制台,进入目标应用 > 应用签名页面,找到应用签名证书下的SHA-256指纹。
- 计算该SHA-256对应的OTP哈希码:执行以下命令行(注意去掉SHA-256指纹中的冒号)
echo -n "SHA-256指纹字符串" | xxd -r -p | base64 | cut -c1-11 - 登录Firebase控制台,进入目标应用 > Authentication > Sign-in method > Phone > Android应用,添加计算得到的哈希码。
- 重新发布应用后,Firebase会同时适配测试签名和Play签名的哈希码,自动填充功能即可恢复。
2. 手动解析短信(替代方案)
若哈希码配置暂时无法生效,可绕过自动填充的哈希校验,自行处理短信内容:
- 注册
BroadcastReceiver监听短信接收广播,获取短信内容。 - 用正则表达式提取OTP验证码(例如匹配6位数字:
\d{6})。 - 将提取到的验证码手动填入输入框。
- 注意:需申请
READ_SMS权限,Android 10+以上版本需引导用户设置默认短信应用,或结合SMS Retriever API(仍需哈希,但可搭配自定义广播逻辑)。
3. 确认Firebase与Google Play的关联状态
- 进入Firebase控制台项目设置 > 应用,检查应用是否已正确关联Google Play(在应用信息中可查看包名关联状态)。
- 开启App Check功能,确保应用签名验证正常,避免因签名不匹配导致的服务异常。
注意事项
- 测试环境使用本地签名哈希码,发布后必须添加Play签名哈希码,两者都需在Firebase中配置,才能覆盖测试与生产场景的自动填充需求。
- 不要修改Firebase短信模板的哈希占位符,系统会自动替换为对应哈希或应用名称,但只有匹配的哈希才能触发自动填充。
内容的提问来源于stack exchange,提问作者krsh
相关产品推荐
相关产品推荐

