让用户登录,只需 一个一次性验证码。
用户无需创建和记住密码,只需确认通过 SMS、WhatsApp、电子邮件或语音发送的一次性验证码,即可注册和登录。Bird Verify 免去了密码重置工单、撞库攻击和哈希密码存储;验证码延迟时,用户还可以立即切换发送渠道。
verify.ts
200 · pendingimport { 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: { email: "ada@example.com" }, }).safe(); const { data, error } = await bird.verify.verifications.check({ to: { email: "ada@example.com" }, code: userInput, }).safe(); if (error) throw error;
您的账户
请确认是您本人。
请输入验证码,验证码已发送至
ada@example.com
verify.ts
200 · pendingimport { 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: { email: "ada@example.com" }, }).safe(); const { data, error } = await bird.verify.verifications.check({ to: { email: "ada@example.com" }, code: userInput, }).safe(); if (error) throw error;
您的账户
请确认是您本人。
请输入验证码,验证码已发送至
ada@example.com
verify.ts
200 · pendingimport { 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: { email: "ada@example.com" }, }).safe(); const { data, error } = await bird.verify.verifications.check({ to: { email: "ada@example.com" }, code: userInput, }).safe(); if (error) throw error;
您的账户
请确认是您本人。
请输入验证码,验证码已发送至
ada@example.com
替代密码和重置流程,无需维护 OTP 数据表。
运行基于密码的身份验证,意味着要存储密码哈希、保护登录端点免受泄露凭据列表的攻击,还要排查落入垃圾邮件的忘记密码邮件。借助 Bird Verify API,你的应用会向用户输入的手机号码或电子邮件地址发送一次性验证码,并直接针对该收件人核验提交的数字。你无需在步骤之间存储验证 ID,也无需维护自定义重试表;如果需要在密码或敏感操作之后增加第二道检查,同一集成也支持双重身份验证。
Bird 如何简化无密码登录。
跨渠道提升登录转化率,无需存储密码、处理重置工单或维护自定义 OTP 数据表。
- 01
杜绝撞库攻击和密码重置。
用户通过短时有效的验证码证明自己掌控手机号码或电子邮件地址,从而完成登录。你可以从数据库中移除密码哈希,阻断利用第三方泄露密码的撞库攻击,也不再因忘记密码的找回流程而流失用户。
- 02
注册和登录使用同一个验证流程。
无论客户是创建新账户还是重新登录,都以相同方式发送和核验一次性验证码。如果已验证的手机号码或电子邮件地址已属于某个用户,就为其开启会话;如果是新的,就当场创建账户并让其登录。
- 03
通过 SMS、WhatsApp、电子邮件或语音发送验证码。
按照你为每个国家配置的渠道优先级,通过用户登录时使用的联系地址触达用户。短信延迟或 WhatsApp 不可用时,用户可以立即通过下一个渠道请求验证码,无需等待重新发送冷却时间结束。
- 04
自动执行尝试次数限制和重新发送上限。
Bird 对存储的验证码进行哈希处理,在可配置的时间窗口后让待处理会话过期,在多次输入错误后锁定暴力猜测,并限制每个收件人的发送次数,防止机器人轰炸用户手机或耗尽你的消息余额。
无密码登录的工作原理
- 01
用户在你的登录页面输入电子邮件地址或手机号码。
- 02
你的后端发起验证请求,Bird 通过为该用户所在国家配置的渠道发送一次性验证码。
- 03
用户在你的应用中输入验证码;如果第一条消息未送达,也可以切换到其他渠道。
- 04
你的后端针对该收件人核验提交的数字,Bird 确认匹配后立即开启用户会话。
两次 API 调用即可让用户登录。
用户提交电子邮件地址或手机号码时发送一次性验证码,然后针对同一收件人核验用户输入的数字。验证码匹配时立即开启会话;如果用户输错数字或时间窗口已过期,响应会告诉你的应用原因以及剩余的尝试次数。
await bird.verify.verifications.create({
to: { email: input.email },
}).safe();
const { data, error } = await bird.verify.verifications.check({
to: { email: input.email },
code: submitted,
}).safe();
if (error) throw error;
// a true result is the login — no password to compare
if (data.success) grantSession(input.email);
规模扩展
不失控。
在工作区中组织团队,控制 API 访问权限,通过审计日志追踪变更。
组织
Harbor
访问权限仅限于其所在工作区。
生产环境/API 密钥
注册服务
活跃Alex Lee
管理员
今天 · UTC
审计日志
组织
Harbor
访问权限仅限于其所在工作区。
生产环境/API 密钥
注册服务
活跃Alex Lee
管理员
今天 · UTC
审计日志
组织
Harbor
访问权限仅限于其所在工作区。
生产环境/API 密钥
注册服务
活跃Alex Lee
管理员
今天 · UTC
审计日志