我可以在移动浏览器上自动读取OTP吗?

时间:2019-05-17 06:30:50

标签: html angular typescript one-time-password

我正在尝试在移动浏览器上自动读取登录OTP。我的Web应用程序是在Angular 7中构建的。

用户单击登录后,就会通过AWS将OTP发送到6位数代码的用户手机。

我已经查询了Google的SMS Retriever API,但这对我的情况没有帮助。

是否可以从移动浏览器读取OTP?

4 个答案:

答案 0 :(得分:2)

简而言之,这是不可能的。由于移动设备无法访问文件系统。使用react native或任何类似的东西。

正如我在搜索问题时看到的那样,我发现“ https://web.dev/web-otp/”。它可能有帮助,但是我还没有实现。

答案 1 :(得分:2)

是的,现在有可能。 Chrome在版本84及更高版本中发布了此功能。借助 WEBOTP API ,我们可以在网络上为移动设备检测OTP。

代码-

if ('OTPCredential' in window) { 
  window.addEventListener('DOMContentLoaded', e => {
    const ac = new AbortController();
    navigator.credentials.get({
      otp: { transport:['sms'] },
      signal: ac.signal
    }).then(otp => {
      alert(otp.code)
    }).catch(err => {
      console.log(err)
    });
  })
} else {
  alert('WebOTP not supported!.')
}

SMS格式-

@www.amazon.com #1598.

这里@ www.amazon.com是将进行验证的域,而otp是1598

演示链接-https://jyotishman.github.io/webOTPAPI/

答案 2 :(得分:1)

任何一种浏览器都只能访问浏览器数据。这是出于安全目的。由于在浏览器中运行的网站无法在浏览器外部进行访问,因此您无法访问在网站上通过移动设备收到的OTP。

一般的经验法则是网站无法访问文件系统,因此禁止浏览器之外的任何功能。

如果您要构建本机应用程序,则可以通过权限访问它。

答案 3 :(得分:0)

这是一个古老的问题,在发布问题期间是不可能的。

但是现在我们可以在移动浏览器上阅读OTP了。

SMS Receiver API JavaScript

您可以在上面的链接中获得文档。

Swiggy之类的公司使用此功能。

注意-它目前处于开发阶段,可从Chrome 78中获得