自动填充 WebOTP javascript api 不起作用

Posted

技术标签:

【中文标题】自动填充 WebOTP javascript api 不起作用【英文标题】:autofill WebOTP javascript api is not working 【发布时间】:2021-05-28 11:40:35 【问题描述】:

我尝试了许多示例代码,但没有任何效果。

console.log("Otp.js>13 mounted");
if ('OTPCredential' in window) 
    try 
        console.log("Otp.js>16 in otpcredential");
        if (navigator.credentials) 
            try 
                console.log("Otp.js>19 credential");
                let type,code = await navigator.credentials.get( otp: transport: ['sms'])
                console.log("EsignSteps.js>78 aaaayo",type,code);
            
            catch (e) 
                console.log("EsignSteps.js>81",e);
            
        
    
    catch (err) 
        console.log("40",err);
    

即使在我收到 OTP 之后,上面的代码也会在几分钟后给出 DOMException

我也试过

const abort = new AbortController();

setTimeout(() => 
  abort.abort();
, 2 * 60 * 1000);

let type,code = await navigator.credentials.get( signal: abort.signal,otp: transport: ['sms'])

也试过了

navigator.credentials.get( signal: abort.signal,otp: transport: ['sms'])
.then((otp)=>
console.log(otp);
)
.catch(err=>
console.log(err);
)

我试过很多短信格式,比如:

格式 1:

Your OTP is : 123456
@https://example.com #123456

格式 2:

Your OTP is : 123456
@example.com #123456

格式 3:

Your OTP is : 123456
@www.example.com #123456

我已经浏览了最小的细节 https://web.dev/web-otp/

我尝试了一些演示,例如https://web-otp.glitch.me/、https://jyotishman.github.io/webOTPAPI/ 哪些不工作

【问题讨论】:

【参考方案1】:

我找到了解决方案。我从保存在我的联系人列表中的朋友的手机号码发送短信。 如果发件人的电话号码包含在收件人的通讯录中,由于底层SMS User Consent API!的设计,该API不会被触发。

【讨论】:

以上是关于自动填充 WebOTP javascript api 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

这个表单自动填充javascript有啥问题?

网页上的自动填充文本框 (Javascript/VBScript)

使用自动完成填充表单时,Javascript 不启用按钮

自动填充总价使用 javascript dom

在自动填充 javascript 上编辑 settimeout

Javascript/PHP/Jquery - 自动填充和数据加密