Я использую автоматическое определение otp в своем приложении, используя документацию web-otp. Я использовал код bleow в своем приложении
otprenderGetMobile() {
const{ otpValue}=this.props;
let signal = new AbortController();
setTimeout(() => {
// abort after 10 minutes
signal.abort();
}, 10 * 60 * 1000);
let { code, type } = navigator.credentials.get({
abort: signal,
otp: {
transport: ["sms"]
}
}).then(otp=>{
alert('otp value is: ',JSON.stringify(otp));
alert('code value is: ',JSON.stringify(code));
alert('type value is: ',JSON.stringify(type));
otpValue = otp;
});
}
мой хтм
<input
type = "text"
id = "otp"
name = "otp"
autocomplete = "one-time-code"
/>
мой формат сообщения OTP
3052 is your Myapp verification code
@dev.myapp.com #3052
он отлично работает на устройстве Android, но проблема в том, что когда я разрешаю разрешение устройства, otp не запрашивает в приложении. Я прикрепил изображения выходов андроида
вот результаты после того, как я разрешил доступ к браузеру
пожалуйста, помогите мне с приведенным выше комментарием, я поддержу данный ответ.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


используйте это в компоненте jsx
<input
type = "text"
autocomplete = "one-time-code"
/>
ресурс https://www.twilio.com/blog/html-attributes-two-factor-authentication-autocomplete
я использую то же самое. autocomplete = "one-time-code" используется для запроса текстового поля для установки значения кода! это не проблема. проблема в том, что метод navigator.credentials.get() должен возвращать otp, но по какой-то причине он не возвращает никакого значения.
Я решил проблему, просто заменив приведенный ниже код
let { code, type } = navigator.credentials.get({
abort: signal,
otp: {
transport: ["sms"]
}
}).then(otp=>{
alert('otp value is: ',JSON.stringify(otp));
alert('code value is: ',JSON.stringify(code));
alert('type value is: ',JSON.stringify(type));
otpValue = otp;
});
с этим
navigator.credentials.get({
otp: { transport: ['sms'] },
signal: ac.signal
}).then(otp => {
console.info('your otp code is',otp.code)
}).catch(err => {
console.info(err);
});
откуда вы вызвали эту функцию otprenderGetMobile , у меня после нажатия "разрешить" otp не копируется в поле. Я вызываю вышеуказанный метод из useEffect(()=>otprendermethod,[]) Пожалуйста, помогите мне