我创建了一个小方法来做到这一点。
首先我生成了一个小的随机6位数字代码(OTP)
如下int otp = new Random().nextInt(900000) + 100000;
那么, 我将此 OTP 发送到我必须验证的用户输入的手机号码, 我正在使用用户自己的短信服务来执行此操作
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(user_mobile.getText().toString(),null,"Otp for verification is: "+otp,null,null);
那么, 我创建意图,启动新活动并将 OTP 传递给新活动
Intent itn = new Intent(MainActivity.this,OtpPage.class);
itn.putExtra("Otp",s_otp);
startActivity(itn);
然后, 我只是让用户输入他从短信收到的 OTP,并使用我从之前的活动中使用 Intent 收到的 OTP 进行验证,如果两者相同,我会验证手机号码,
现在我的问题是,这是执行此操作的有效方法还是包含一些安全缺陷, 如果是的话,这里可能会出现什么安全问题?
这并没有什么问题。这是安全的。这是因为 Android 只会认为您正在发送短信而没有其他任何事情。其他应用程序也使用它。由于 Firebase Auth 在网页上显示 reCaptcha,因此许多应用程序都这样做了。
你可以用这个代替
private int createOtp(){
int otp = new Random().nextInt(9) + new Random().nextInt(9) +
new Random().nextInt(9) + new Random().nextInt(9) +
new Random().nextInt(9) + new Random().nextInt(9);
return otp;
}
现在可以这样分配 ->
int otp = createOtp();
你好,Umesh kaise ho tum。 Randi bawah 或 chhinar bhi ho tumhare 编号 PE ak OTP gya hoga batao madarchodo。