https://web.dev/web-otp提供的Web OTP API信息很好。但是 https://web-otp.glitch.me/ 中提供的演示目前可以在版本 86.0.4240.111(官方版本)(64 位)上运行。
我看到的主要原因是 OTP 的导航凭证事件没有被触发,我不明白为什么会发生这种情况。
https://web-otp.glitch.me/的代码库有问题吗或者chrome提到的版本有任何问题吗?
重现步骤 -
未知号码将
@web-otp.glitch.me #12345
作为短信发送到您的手机。您应该会收到一条对话框消息,询问您是否希望浏览器输入此 OTP。尝试更改主机名,不正确的主机名可能会导致 Promise 无法解析,即
navigator.credentials.get
确保您的短信的最后一行应如下所示:
@<HOSTNAME_OF_WEBSITE> #<OTP>
经过一些实验,似乎只有当最后一行(带有@和#)之前的最后一行文本以数字结尾时才有效。
真的很奇怪。
所以就像:
OTP code: <OTP>
Ignore this: 1111
@<HOSTNAME_OF_WEBSITE> #<OTP>
主机名必须与输入表单所在的主机名匹配。如果输入表单位于子域上,那么它必须是您的主机名。 @hostname 必须另起一行,后跟 1 个空格,然后是“#”,然后是您的代码。
之前或之后的所有内容都将被忽略。因此,您应该在消息的开头使用更用户友好的代码,以防 OTP 自动填充失败,用户仍然可以理解并手动输入。
有机会使用 iframe 进行输入验证,请检查 WEB OTP 文档以了解该特殊情况。