如何在Android上的React Native中自动验证OTP?

时间:2019-09-20 08:57:20

标签: reactjs react-native react-native-android one-time-password sms-verification

我正在尝试使用otp上的react-native-sms-retriever自动验证android devices。 我尝试了以下方法来实现。

 import SmsRetriever from 'react-native-sms-retriever';

 // Get the phone number (first gif)
 _onPhoneNumberPressed = async () => {
 try {
 const phoneNumber = await SmsRetriever.requestPhoneNumber();
 } catch (error) {
 console.log(JSON.stringify(error));
 }
 };

 // Get the SMS message (second gif)
 _onSmsListenerPressed = async () => {
 try {
 const registered = await SmsRetriever.startSmsRetriever();
 if (registered) {
 SmsRetriever.addSmsListener(event => {
 console.log(event.message);
 SmsRetriever.removeSmsListener();
 }); 
 }
 } catch (error) {
 console.log(JSON.stringify(error));
 }
 };

以下是我的OTP格式

OTP for your login to Orgpick is 3242. Please enter OTP  within 10 minutes.

我还创建了sms格式,如下所示,虚拟密钥-SZ3KPh5voKE请使用以下sms格式指导我。

我是否需要从服务器端获取相同的格式?

需要在服务器端进行哪些更改?

<#>OTP for your login to Orgpick is 3242. Please enter OTP  within 10 minutes.SZ3KPh5voKE

在尝试上述解决方案时,它会显示 time out exception

请帮助我摆脱困境。

3 个答案:

答案 0 :(得分:1)

我已经尝试了两个用于自动otp验证的库,但是它们都没有为我工作,因此我尝试了以下库的正常工作。请检查答案,我已在此处上传

Auto otp verification

答案 1 :(得分:0)

基本上,这是一个关键问题。您在消息中发送的十六进制代码密钥可能不正确,这导致了此问题。尝试生成一个完美的密钥并将其发送给消息。

注释生产密钥和调试密钥不同。您看起来像调试键。

https://github.com/Bruno-Furtado/react-native-sms-retriever/issues/4

此问题的答案将为您提供帮助。

答案 2 :(得分:0)

请检查您的播放服务是否是最新的。我遇到了同样的问题,并通过更新播放服务解决了这个问题。