Я пытаюсь создать приложение флаттера, в котором после создания пользователя с электронной почтой / паролем они сохраняются в базе данных, затем пользователь вводит свой номер телефона, на который отправляется otp, и пользователь входит в систему после проверки. Моя проблемачто, когда оба эти шага завершены, firebase создает две отдельные учетные записи: одна с электронной почтой, другая с телефоном.Пожалуйста, скажите мне, как я могу создать одну учетную запись с электронной почтой / паролем и телефоном.Я также хочу войти с электронной почтой / паролем или телефоном.Или любой другой способ создать пользователя с помощью электронной почты / пароля и телефона.
void _verifyPhoneNumber() async {
if (mounted)
setState(() {
_message = '';
});
final PhoneVerificationCompleted verificationCompleted =
(AuthCredential phoneAuthCredential) {
_firebaseUser.updatePhoneNumberCredential(phoneAuthCredential);
if (mounted)
setState(() {
_message = 'Received phone auth credential: $phoneAuthCredential';
});
};
final PhoneVerificationFailed verificationFailed =
(AuthException authException) {
showToast(authException.message,
gravity: Toast.TOP, duration: Toast.LENGTH_LONG);
if (mounted)
setState(() {
_isLoading = false;
_message =
'Phone number verification failed. Code: ${authException.code}. Message: ${authException.message}';
});
};
final PhoneCodeSent codeSent =
(String verificationId, [int forceResendingToken]) async {
print('Please check your phone for the verification code.');
_verificationId = verificationId;
setState(() {
_isLoading = false;
});
Navigator.of(context).pushReplacement(new MaterialPageRoute(
builder: (BuildContext context) =>
new VerifyOtp(_firebaseUser, verificationId)));
};
final PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout =
(String verificationId) {
_verificationId = verificationId;
};
await _firebaseAuth.verifyPhoneNumber(
phoneNumber: phoneController.text,
timeout: const Duration(minutes: 2),
verificationCompleted: verificationCompleted,
verificationFailed: verificationFailed,
codeSent: codeSent,
codeAutoRetrievalTimeout: codeAutoRetrievalTimeout);
}
Проверка *
final AuthCredential credential = PhoneAuthProvider.getCredential(
verificationId: widget.verificationId,
smsCode: otpController.text,
);
await _firebaseAuth.signInWithCredential(credential).then((user) {
}).catchError((error) {
showToast(error.toString(),
gravity: Toast.TOP, duration: Toast.LENGTH_LONG);
});