标准(验证码在前)
482913 is your OmniDemo verification code. It expires in 5 minutes. Never share this code with anyone.
GSM-7 · 102 个字符 · 1 条短信
免费工具
生成一条只占一条短信、可在 Android 和 iPhone 上自动填充,并符合 Meta WhatsApp 身份验证模板的验证码消息。含分段计数、可直接发送的 API 代码和安全检查清单。
免费 · 无需注册 · 在浏览器中运行
482913 is your OmniDemo verification code. It expires in 5 minutes. Never share this code with anyone.
GSM-7 · 102 个字符 · 1 条短信
OmniDemo: your code is 482913. Valid for 5 min. Don't share it.
GSM-7 · 63 个字符 · 1 条短信
482913 is your OmniDemo password reset code. It expires in 5 minutes. If you didn't request it, ignore this message.
GSM-7 · 116 个字符 · 1 条短信
资料来源:Google SMS Retriever 文档、WICG origin-bound one-time codes、Apple Password AutoFill 文档、Meta 身份验证类模板(核查日期 2026 年 10 月 10 日)。
需要带自动回退、统一账单的短信、WhatsApp 和语音验证码? 了解验证码与通知
您在此输入的任何内容都不会发送到我们的服务器。
简短回答
好的验证码短信把验证码放在最前面,写明品牌和有效期,并提醒用户切勿告知他人,例如:「482913 是您的 Acme 验证码,5 分钟内有效,请勿泄露。」控制在一个分段内(GSM-7 为 160 个字符,Unicode 为 70 个字符),不要放链接。Android 自动填充需加入 11 位应用哈希;iOS 与网页则以「@yourdomain.com #482913」结尾。
填写应用或品牌名称,选择 4 至 8 位的验证码长度、纯数字还是字母加数字,以及验证码的有效分钟数。
选择英语、阿拉伯语、法语、西班牙语、德语或葡萄牙语,再选择短信、WhatsApp 或两者兼用。阿拉伯语消息按 Unicode 计数(每条短信 70 个字符)。
可选填 Android 应用的 11 位哈希和你的网站域名。工具会生成 SMS Retriever、绑定域名以及组合格式,并检查 140 字节的上限。
复制某个短信版本、WhatsApp 模板 JSON,或我们短信 API 的 cURL、Node.js 请求。上线前请逐项完成安全检查清单。
验证消息只有一个任务:把正确的验证码快速送到正确的人手中,并且不易被滥用。多数用户直接从锁屏通知读取验证码,而通知只显示开头一行左右。请把验证码放在开头或靠前的位置,并写清品牌,让用户知道是哪个服务发来的。
长度关系到成本和可靠性。一条 GSM-7 短信可容纳 160 个字符,拆分后每段 153 个字符。只要出现一个 GSM-7 字符集之外的字符,例如阿拉伯字母、表情符号、弯引号或「ó」「ç」这类带重音的字母,整条消息就会切换为 UCS-2 编码,上限降至 70 个字符,拆分后每段 67 个。两段的验证码费用翻倍,其中一段延迟到达的概率也略高。生成器会显示每个版本的编码和分段数,并可将带重音的字母替换为普通字母,使西班牙语、葡萄牙语和法语消息保持在 GSM-7 内。
Google 的 SMS Retriever API 让 Android 应用无需短信权限、也无需用户手动输入,就能读取验证短信。根据 Google 文档,消息不得超过 140 字节,必须包含一次性验证码,并带有标识你的应用的 11 位哈希字符串。140 字节相当于 160 个 GSM-7 字符或 70 个 UCS-2 字符,因此实际上消息必须控制在一条短信之内。
该哈希是应用包名与签名证书经 SHA-256 计算并做 base64 编码后的前 11 个字符。Google 自己的示例把它单独放在末尾一行:「Your ExampleApp code is: 123ABC78」,空一行,然后是「FA+9qCX9VSu」。请用正式环境的 keystore 计算哈希,并在服务器端写死。Google 提醒不要使用在客户端动态计算的哈希字符串。旧版文档曾要求消息以「<#>」开头,当前页面已不再列出该前缀。保留它没有坏处,但会占用 4 个字符。如果无法控制消息格式,可改用 SMS User Consent API:用户点击一次,即允许你的应用读取那一条短信。
当输入框被标记为一次性验证码字段时,iOS 和 macOS 会识别收到的短信中的验证码,并在键盘上方给出建议:原生应用使用 textContentType = .oneTimeCode,HTML 输入框使用 autocomplete="one-time-code",详见 Apple 开发者文档。自 iOS 14 和 macOS Big Sur 起,Safari 还支持绑定来源的一次性验证码,其格式由 WICG 的「Origin-bound one-time codes delivered via SMS」规范定义。
按该格式,消息的最后一行是「@example.com #747723」:前面加 @ 的域名,恰好一个空格,然后是前面加 # 的验证码。可选的第三个值「@embedded.example」用于指明嵌入的站点。最后一行之前可以有供人阅读的文字,但各值之间若夹杂其他文字,该行即无效。这样自动填充只会在该域名或与之关联的应用中提供验证码,钓鱼难度大大提高。生成器会生成同时带有 Android 哈希和绑定域名末行的组合消息,对拉丁字母语言仍可控制在 140 字节内。阿拉伯语请分别发送 Android 和 iOS 格式。
WhatsApp 要求使用身份验证模板发送一次性密码,且正文由 Meta 固定。英文为「<code> is your verification code.」。你可以添加 Meta 的安全提示行(「For your security, do not share this code.」)和有效期页脚(「This code expires in <N> minutes.」),其中 code_expiration_minutes 取值 1 至 90。各语言版本使用 Meta 自己的固定译文,不支持 URL、媒体和表情符号。
按钮由你选择。复制验证码按钮在所有环境都可用。一键自动填充会携带验证码打开你的 Android 应用,需要提供包名、签名哈希并完成握手。零点击(仅 Android)没有按钮:WhatsApp 直接把验证码广播给你的应用。在 iOS 26 及更高版本,键盘建议无需任何集成即可从通知中提供验证码。验证码最长 15 个字符,并在发送请求中出现两次:一次作为正文参数,一次作为按钮参数(sub_type 为「url」)。复制验证码按钮的文字不超过 25 个字符。请设置 message_send_ttl_seconds,避免过期验证码被延迟送达。此外,通过 Cloud API 发送的认证消息,Meta 只投递到用户的主设备,关联设备会看到被遮挡的提示。
消息本身是最容易的部分,多数验证码欺诈和成本超支都出在周边规则薄弱。以下是被广泛采用的建议,并非法律要求,请根据自身风险调整数值。
发送建议采用逐级降级:用户有 WhatsApp 时先发 WhatsApp,短暂超时后(例如 30 至 60 秒仍无送达回执)降级为短信,并对座机和信号较差的用户提供朗读验证码的语音电话作为最后手段。在 GCC,验证码属于交易类流量,因此阿联酋「AD-」发件人前缀这类营销规则并不适用。不过多数市场仍要求你的 Sender ID 已报备,上线前请核对当地规则。
验证码在前,其后是品牌、有效期和勿泄露提醒,控制在一个分段内且不含链接:「482913 是您的 Acme 验证码,5 分钟内有效,请勿告知他人。」Android 自动填充加一行应用哈希,iOS 和网页自动填充则把「@yourdomain.com #482913」作为最后一行。
目标是一个分段:GSM-7 为 160 个字符,Unicode(如阿拉伯语)为 70 个字符。Google SMS Retriever 把消息限制在 140 字节,与单条短信上限一致。更长的消息会被拆成 153 或 67 个字符的分段,并按段计费。
不需要。Google 当前的 SMS Retriever 文档只要求三点:不超过 140 字节、包含一次性验证码、带 11 位应用哈希。「<#>」前缀来自旧版指引,保留无妨,但会占用 4 个字符。
把输入框标记为一次性验证码字段(应用中用 textContentType .oneTimeCode,网页用 autocomplete="one-time-code"),iOS 就会从信息中推荐验证码。若要把验证码绑定到你的网站,请让短信以「@yourdomain.com #123456」结尾,两个值之间恰好一个空格。
不可以。正文(「<code> is your verification code.」)由 Meta 固定并按语言翻译。你只能添加可选的安全提示行、1 至 90 分钟的有效期页脚,并选择复制验证码、一键或零点击按钮。不允许使用 URL、媒体和表情符号。
两者结合。WhatsApp 提供复制验证码和一键自动填充按钮,并显示你已验证的企业名称;短信则无论有无数据流量都能到达所有手机。常见做法是先发 WhatsApp,30 至 60 秒未送达则降级为短信,最后再提供语音电话。
阿拉伯语文本使用 UCS-2 编码,单条短信只允许 70 个字符,拆分后每段 67 个。请让阿拉伯语文案保持简短,验证码使用西式数字,并在发送前用生成器检查字数。
最好避免。验证消息里的链接会让钓鱼更容易,运营商也更常过滤,并且会让用户养成点击短信链接的习惯。只发送验证码,让用户手动输入或在你的应用里自动填充。