有没有办法禁用Android"即时验证" (使用Firebase Phone Auth自动登录)?有一种方法可以禁用"自动检索"通过将verifyPhoneNumber的超时设置为0(参考:https://firebase.google.com/docs/reference/android/com/google/firebase/auth/PhoneAuthProvider.html)。但是,我找不到记录的方法来禁用即时验证。
我问的是因为潜在的安全问题:从设备中移除SIM卡仍会自动登录该用户!换句话说,使用其他人的旧设备的用户可以使用他们的旧电话号码登录。以下是复制步骤:
观察到的行为: 尽管没有合适的SIM卡,用户仍会自动登录
预期行为: 如果用户的设备没有与输入的电话号码相关联的SIM卡,则它们不会自动登录,并且会向该号码发送短信。
答案 0 :(得分:6)
更新,11.5.09应该已经到达几乎所有用户的设备。 SIM卡更改后将立即停止验证。您也可以使用此技巧进行手动测试。
在即将于第三季度末发布的即将推出的Google Play服务v11.5版本中,将自动检测SIM卡更改,这将阻止即时验证工作。新版本将自动推送到用户的设备,无需更改SDK。
要获得最佳的用户体验和选择加入率,最好等待Play服务更新,而不是自己添加可怕的运行时权限(读取和比较电话号码)。谢谢你的耐心等待!
答案 1 :(得分:2)
不幸的是,there isn't a way to disable Instant Verification 目前似乎。
在询问开发人员添加此功能后(实际上是different reason),我回复了it will be added to the feature request。
也许你应该在那里添加评论,指明你的安全性发现。 也许它会加快添加此功能的过程:)
答案 2 :(得分:1)
答案 3 :(得分:0)
您可以通过以下方式获取设备上使用过的电话号码:
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
并添加必需的权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
从FirebaseAuth
获取电话号码:
String number = FirebaseAuth.getInstance().getCurrentUser().getPhoneNumber();
在它们之间进行比较,如果可以继续,则使用twilio
或某些类似的服务发送短信
答案 4 :(得分:0)
无需更换SIM卡!!!!
为了多次获得OTP /代码进行测试,请遵循以下代码 在活动的oncreate中,您将获得代码 现在,请卸载该应用,然后再次确认您将获得一个不会立即生效的新代码。
如果您仍然无法做到这一点,我将分享我的完整活动代码!
IComponentProps