SMS 验证会向手机号发送一次性验证码,并确认输入验证码的人持有该号码。Bird 生成验证码、发送验证码、执行按接收者频率限制,并按接收者校验——因此无需存储 ID,也无需对接重发接口。
verify.ts
200 · pending
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// Send the code, then check it by recipient.
await bird.verify.verifications.create({
to: { phone_number: "+15551234567" },
}).safe();
const { data } = await bird.verify.verifications.check({
to: { phone_number: "+15551234567" },
code: userInput,
}).safe();SMS OTP 只需一次调用发送,一次调用校验。
SMS 是 Bird Verify API 上的电话类通道:提交包含手机号的验证请求,我们通过共享的 Authifly SMS 发送方发送验证码;使用同一号码进行校验。重新提交创建请求即为重发(创建或重试),会话中的每个验证码在验证通过、过期或尝试次数用尽前均保持有效。
SMS 验证为您提供的功能。
内置功能,每次发送均生效。
- 01
按手机号寻址。
传入一个 E.164 格式的手机号,我们会自动规范化处理,并通过该号码所属国家对应的发送方以 SMS 发送。
- 02
服务器生成的哈希验证码。
默认生成 6 位验证码(可配置 4–10 位),使用加密随机源生成,仅以 HMAC 形式存储。您永远不会看到明文。
- 03
重发即同一调用。
60 秒冷却期过后重新提交创建请求即可重发——同一会话、新验证码,两个验证码均有效。无需单独的重发接口。
- 04
内置按接收者频率限制。
按接收者的发送上限和按工作区的每日配额可控制发送量,防止费用失控,超限时返回 429 并附带 Retry-After。
- 05
覆盖范围按国家扩展。
SMS 目前通过共享的 Authifly 发送方发送,可在其已注册的国家投递;随着专属和注册发送方的上线,覆盖范围将进一步扩展。
完整流程,仅需两次调用。
创建或重试调用将验证码发送至手机号;校验调用按该号码确认验证码。两次调用之间无需传递 ID——接收者即为关键标识。
sms-otp.ts
200
await bird.verify.verifications.create({
to: { phone_number: "+15551234567" },
}).safe();
const { data } = await bird.verify.verifications.check({
to: { phone_number: "+15551234567" },
code: userInput,
}).safe();
// data.result is true or false; data.reason elaborates ("expired", "already_verified", …)SMS OTP 常见问题
什么是 SMS OTP?+
SMS 一次性验证码是通过短信发送到手机号的短代码,用户输入该代码以证明其控制该号码。由于几乎所有手机都能接收 SMS,它是最广泛使用的二次验证和注册校验方式。
我需要存储验证 ID 来校验验证码吗?+
不需要。Bird 按接收方进行校验:您发送手机号码和验证码,我们根据配置与号码的组合解析实时会话。配置 ID 是一个常量,每次验证不会存储任何内容。
我可以覆盖哪些国家?+
SMS 通过共享的 Authifly 发送方发送,可在其已注册的国家投递。发送方 ID 规则因国家而异,注册和专属发送方会随时间扩展覆盖范围。
如何防止 SMS 刷量攻击和暴力破解?+
目前已内置按接收者发送上限、按工作区每日配额和按验证尝试次数限制。更深层的欺诈信号检测和 SMS 刷量防护即将推出。
我的用户会看到验证码来自谁?+
Authifly,Bird 的验证品牌。它是用户收到每个验证码时看到的身份标识:邮件来自 otp@verify.authifly.com 或您自己的已验证域名,SMS 和 WhatsApp 均以 Authifly 品牌发送。authifly.com 是一个公开页面,向接收者说明 Authifly 代表企业发送合法的一次性验证码。Bird 是您构建产品的平台;Authifly 是接收者看到的品牌。