You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

iOS版Firebase手机号认证上线App Store后无法收短信原因排查

iOS上线App Store后Firebase手机号验证无法收短信的排查方案及证书配置流程

一、可能导致收不到短信的原因分析

从你的描述来看,开发测试正常但上线后失效,大概率是生产环境与开发环境的配置差异导致的,常见原因有这些:

  • Firebase控制台未配置生产环境的iOS发布证书指纹
    开发时你用的是开发证书,上线用的是App Store发布证书,Firebase需要验证应用的合法性,如果没添加发布证书的指纹,Auth请求会被拦截,自然触发不了短信发送。

  • 未启用/配置Firebase App Check生产环境验证
    现在Firebase Auth在生产环境默认会强制要求App Check验证(防止滥用),开发阶段你可能用的是Debug Token能正常通过,但上线后如果没配置Apple App Attest或DeviceCheck,Auth请求会被拒绝,导致短信无法发出。

  • 短信配额耗尽
    Firebase Auth的短信验证有免费额度,如果上线后用户量骤增,超出了免费配额或者你设置的付费配额,就会停止发送短信。可以去Firebase控制台的「使用情况」页面查看配额消耗情况。

  • 用户端短信过滤
    部分iPhone用户开启了系统自带的短信过滤(比如“未知发件人过滤”),或者安装了第三方短信拦截App,可能把Firebase的验证短信归类为垃圾短信。这种情况需要引导用户检查短信过滤设置。


二、App Store对应的Firebase配置流程(替代Google Play的SHA密钥操作)

Google Play需要配置SHA1/SHA256密钥,iOS则需要把App Store发布证书的SHA-256指纹添加到Firebase控制台,具体步骤如下:

  1. 导出Apple发布证书
    登录Apple Developer后台,进入「Certificates, Identifiers & Profiles」,找到你的App对应的Production类型证书,下载证书文件(.cer格式)。打开Keychain Access,导入这个证书,右键点击证书选择「导出」,保存为.p12格式文件(可以不设置密码)。

  2. 生成证书的SHA-256指纹
    打开终端,执行以下命令(替换your_cert.p12为你导出的文件路径):

    openssl pkcs12 -in your_cert.p12 -nodes -passin pass: | openssl x509 -noout -fingerprint -sha256
    

    输出结果会是类似SHA256: XX:XX:XX...的字符串,去掉所有冒号,得到纯字母数字的指纹串。

  3. 添加到Firebase控制台
    打开Firebase控制台,进入你的项目 → 「项目设置」→ 「应用」标签页,找到对应的iOS应用,滚动到「App Store发布证书」区域,点击「添加指纹」,把刚才生成的SHA-256指纹粘贴进去。

  4. 更新项目配置文件
    重新下载GoogleService-Info.plist文件,替换你iOS项目中的旧文件,然后重新打包、签名,上传到App Store即可。


额外排查建议

如果配置完还是不行,可以:

  • 查看Firebase控制台的「Auth」→「登录方式」页面,确认「电话」登录方式已经启用,并且没有设置地区限制。
  • 在Xcode中切换到Release模式,本地测试生产环境的验证流程,看是否能收到短信,排除打包过程中的配置问题。

内容的提问来源于stack exchange,提问作者Ali A. Jalil

火山引擎 最新活动