You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Phone Auth收不到SMS OTP,如何通过WhatsApp发送验证码?

解决Firebase Phone Auth SMS接收问题:WhatsApp发送OTP替代方案

Firebase Phone Auth的设计逻辑是不对外暴露生成的OTP验证码,所以无法直接获取它的OTP并通过WhatsApp发送。你需要搭建自定义OTP验证流程,结合Firebase自定义令牌来实现登录,具体步骤如下:

1. 放弃Firebase自动OTP发送流程

客户端不再使用signInWithPhoneNumber这类自动触发SMS的方法,改为直接收集用户手机号(自行处理格式校验,比如添加国家码),并将其传递到你的后端服务。

2. 后端生成OTP并通过WhatsApp发送

  • 后端生成6位(或自定义长度)的随机OTP,将其与用户手机号绑定,存储到数据库中(设置过期时间,建议5分钟,避免重复使用)。
  • 调用WhatsBusiness Platform API或第三方WhatsApp消息服务商接口,将OTP发送至用户的WhatsApp账号(注意手机号需符合WhatsApp规范,如+8613xxxxxxxxx格式)。

3. 后端验证OTP有效性

用户在客户端输入WhatsApp收到的OTP后,将验证码和手机号一同传给后端:

  • 后端从数据库查询该手机号对应的有效OTP,对比输入值是否一致。
  • 验证通过:使用Firebase Admin SDK的createCustomToken方法生成自定义令牌(令牌关联的UID可以是你数据库中用户的唯一ID,新用户则生成新UID)。
  • 验证失败:返回错误提示,让用户重新输入或重新发送OTP。

4. 客户端用自定义令牌登录Firebase

客户端获取后端返回的自定义令牌后,调用Firebase Auth的signInWithCustomToken方法完成登录,此时用户将被纳入Firebase Auth体系,可正常使用Firebase的其他服务。

关键注意事项

  • OTP存储需加密,过期时间严格执行,防止重放攻击。
  • 新用户场景下,验证OTP通过后需先在你的数据库创建用户记录,再生成自定义令牌;老用户直接匹配已有记录即可。
  • 可保留Firebase Phone Auth作为备选方案,当WhatsApp发送失败时,切换回SMS方式提升容错率。

内容的提问来源于stack exchange,提问作者Mujtaba Fadhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:03:36