Skip to main content

superun SMS Provider

superun 云计算 默认已经为你启用手机登录并配置好 send_sms 钩子,可直接使用;如果希望走自家短信通道,也可以配置自定义 Webhook 接管。

客户端整合

无论使用默认 Provider 还是自定义 Provider,客户端代码完全一致:
使用流程:
  1. 用户点击「发送验证码」时调用 sendOTP(phone),平台或你的自定义 Webhook 会收到事件并下发短信
  2. 用户填入收到的验证码后调用 verifyOTP(phone, token) 完成校验

默认 Provider(推荐)

开通 superun 云计算 后手机登录已自动启用,无需任何额外操作,适合绝大多数场景,零运维成本。

自定义 Provider(高级)

适用场景:希望使用自家短信通道、按国家/运营商分流、出海合规要求自建发送链路等。 启用后,Supabase 会把 send_sms 事件签名转发到你提供的 Webhook,由你的服务调用最终的短信通道(阿里云/腾讯云/Twilio 等)下发验证码。

1. 在控制台配置自定义 Hook

进入项目 superun云计算 → 身份验证设置 → 电话 Provider,展开 自定义 SMS Hook 卡片: superun云计算 电话登陆 填写两个字段:
  • Hook URI:你部署的 Webhook 接口地址,必须是 https://
  • Hook Secret:用于校验 Webhook 请求签名的密钥。点击右侧 随机生成 按钮生成符合 v1,whsec_<base64> 格式的密钥,再用 复制 按钮把它保存到你自己的服务配置里
配置webhook
两个字段必须同时填写或同时留空。留空则继续使用平台默认 Hook,要回退到默认 Provider 直接清空两个字段并保存即可。
保存后,下一次手机登录的 OTP 事件就会被转发到你的 Webhook。

2. 实现 Webhook 服务

下面是一个最小化的 Express 示例,演示如何接收 Supabase 的 send_sms 事件、校验签名、提取手机号与验证码,再转交给你自己的短信通道。 签名校验用的是 Supabase 官方推荐的 standardwebhooks 库(与 superun 平台默认 Hook 使用同一套规范),先安装依赖:
要点:
  • 必须使用 raw body(express.raw),先 JSON parse 会导致签名校验失败;同一路由上 不要再挂 express.json(),它会把 body 解析成对象、覆盖 raw 字节
  • Secret 传给 standardwebhooks 时务必去掉 v1,whsec_ 前缀
  • 签名相关的 header(webhook-id / webhook-timestamp / webhook-signature)由 Express 统一规范化为小写,standardwebhooks 内部也按小写读取,直接传 req.headers 即可;如果中间走了反向代理或 APM,要确认它们没有改写 body 字节或丢掉这三个 header
  • 该接口必须以 HTTPS 暴露(控制台也校验 https://)
  • 校验失败一律返回 4xx,避免 Supabase 误判已下发

3. 联调验证

完成上面两步后,在你的应用里走一遍 signInWithOtp(phone),确认:
  1. Webhook 服务收到请求且签名校验通过
  2. 你的短信通道确实下发了验证码
  3. 用户输入验证码后 verifyOtp 返回成功

运作方式

无论是默认还是自定义 Provider,链路都一样:
  1. 客户端调用 signInWithOtp({ phone })
  2. Supabase 生成 OTP 并触发 send_sms 钩子
  3. 钩子带签名 POST 到 Webhook 地址(默认 = superun Gateway;自定义 = 你部署的服务)
  4. Webhook 校验签名后调用底层短信通道下发验证码
  5. 用户输入验证码,客户端 verifyOtp 完成校验
默认 Provider 下的 Edge Function、签名密钥、SMS 闸道整合都由 superun 云计算 自动维护,你只需要关心客户端流程。自定义 Provider 下,你额外负责 Webhook 服务与短信通道的稳定性。