我想将电话号码与以前创建的帐户关联; 但是当我验证电话号码时,我发现了两种情况:
他们向用户发送带有代码的短信,当用户输入代码时,我只是将手机保存在数据库中并结束。没问题。
google自动验证电话,而不发送MSG,因为输入的号码== SIM卡号码。这里的问题是它自动登录并在Auth中创建新的Firebase用户,并且该用户自动注销当前帐户并登录新帐户(电话号码) 我想阻止它自动创建帐户。有什么办法吗?
代码:
Future<void> verifyPhone() async {
final PhoneCodeAutoRetrievalTimeout autoRetrieve = (String verId) {
//this.verificationId = verId;
};
final PhoneCodeSent smsCodeSent = (String verId, [int forceCodeResend]) {
this.verificationId = verId;
smsCodeDialog(context).then((value) {
print('Signed in');
});
};
final PhoneVerificationCompleted verifiedSuccess = (FirebaseUser user) {
print('verified');
};
final PhoneVerificationFailed veriFailed = (AuthException exception) {
print('${exception.message}');
};
print("\n\n ${this.phoneNo} \n\n");
await FirebaseAuth.instance.verifyPhoneNumber(
phoneNumber: "+2${this.phoneNo.toString()}",
codeAutoRetrievalTimeout: autoRetrieve,
codeSent: smsCodeSent,
timeout: const Duration(seconds: 5),
verificationCompleted: verifiedSuccess,
verificationFailed: veriFailed,
);
}
答案 0 :(得分:0)
更改verifySuccess函数以获取电话号码的参数,然后将电话号码保存到数据库中,而无需继续使用这些凭据实际登录用户。然后,当用户登录到您的应用程序时,只需检查数据库以查看电话号码字段是否存在。如果存在,则对其进行验证,如果不存在,则将用户转发回电话验证屏幕。如果您遵循此过程,请确保取出使用电话验证的凭据继续登录用户的所有代码。这样就不会创建另一个唯一ID。