如何在SpringBoot项目中使用Firebase向手机号发送OTP验证码
Firebase 短信OTP功能与Spring Boot集成实现方案
前置说明
你项目已经完成了Firebase谷歌、Facebook账号认证集成,所以Firebase Admin SDK的基础初始化配置已经存在,不需要重新做底层配置,直接复用现有配置即可。
实现步骤
- 依赖引入
如果你还没在pom.xml中引入Firebase Admin SDK依赖,添加如下配置,已引入可直接跳过:<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.2.0</version> <!-- 可替换为最新稳定版本 --> </dependency> - OTP发送逻辑实现
- 先在Firebase控制台的「Authentication」-「登录提供程序」页面,开启电话登录选项,完成基础配置(可自定义短信模板、发送方标识)
- 服务端接收用户传入的手机号后,先将手机号转换为 E.164标准格式(例:+8613800138000),调用Firebase Auth的
generateSignInWithPhoneNumber方法,传入手机号参数 - 方法会返回对应的sessionInfo参数,将该参数与用户请求标识绑定存储到服务端缓存(如Redis),Firebase会自动触发短信OTP发送到对应手机号
- OTP校验逻辑实现
- 接收用户提交的OTP验证码,取出缓存中对应用户的sessionInfo参数,调用Firebase Auth的
verifyPhoneNumber方法传入两个参数做校验 - 校验返回成功即可确认用户身份合法,走后续业务逻辑;校验失败返回错误提示给用户即可
- 接收用户提交的OTP验证码,取出缓存中对应用户的sessionInfo参数,调用Firebase Auth的
调试&生产注意事项
- 开发阶段可在Firebase控制台电话登录配置页添加测试手机号和固定测试OTP,调试时不会实际发送短信,不占用配额
- Firebase免费版有每日短信发送配额限制,生产环境上线前需提前评估用量,按需调整配额避免超量导致发送失败
- 若在国内使用该能力,需提前确认短信内容、发送主体符合国内通信监管的合规要求
内容的提问来源于stack exchange,提问作者wandermonk
相关产品推荐
相关产品推荐

