# #firebase #flutter #firebase-authentication
Вопрос:
Я пытаюсь связать анонимных пользователей с активными пользователями или создать нового пользователя с помощью linkWithCredential, однако я получаю эту ошибку
Срок действия SMS-кода истек. Пожалуйста, отправьте код подтверждения повторно, чтобы повторить попытку.
Я пробовал несколько способов, но результат один и тот же. Даже я пытался установить учетные данные телефона на старый экземпляр аутентификации, который был до выхода из системы, но ошибка продолжает появляться.
signIn(context,
{required String smsOTP,
required UserDataProvider userDataProvider}) async {
this.context = context;
User? user = FirebaseAuth.instance.currentUser;
Miscellaneous.showLoader(context, this);
try {
final AuthCredential credential = PhoneAuthProvider.credential(
verificationId: verificationId, smsCode: smsOTP);
if (user == null) {
auth.signInWithCredential(credential).then((value) {
getUserDetailToken(context, value.user!, userDataProvider);
}).catchError((error) {
FirebaseAuthException firebaseAuthException = error;
FirebaseAuth authOld = FirebaseAuth.instance;
if (firebaseAuthException.code == "credential-already-in-use") {
FirebaseAuth.instance.signOut(); // sign out before reverification
userAlreadyPresentInFirebase(authOld,credential, userDataProvider);
Miscellaneous.dismissLoader(context);
});
} else {
user.linkWithCredential(credential).then((value) {
getUserDetailToken(context, value.user!, userDataProvider);
}).catchError((error) {
FirebaseAuthException firebaseAuthException = error;
FirebaseAuth authOld = FirebaseAuth.instance;
if (firebaseAuthException.code == "credential-already-in-use") {
FirebaseAuth.instance.signOut(); // sign out before reverification
userAlreadyPresentInFirebase(authOld,credential, userDataProvider);
Miscellaneous.dismissLoader(context);
});
}
}
}
void userAlreadyPresentInFirebase( FirebaseAuth authOld , AuthCredential credential, UserDataProvider userDataProvider)
async {
Miscellaneous.logMessage(
Tag, "userAlreadyPresentInFirebase>>>");
//reLogin user and don't link auth id of anonymous user
//Breaks here !!!!!!!!!
await FirebaseAuth.instance.signInWithCredential(credential).then((value) {
getUserDetailToken(context,value.user!, userDataProvider);
Miscellaneous.logMessage(Tag, auth.currentUser.toString());
}).catchError((error) {
FirebaseAuthException firebaseAuthException = error;
Miscellaneous.logMessage(Tag, "catchError $error");
if (errorMessage == 'invalid-verification-code') {
Miscellaneous.showMessage(context, firebaseAuthException.message!);
} else {
if (firebaseAuthException != null) {
if (firebaseAuthException.message != null) {
Miscellaneous.showMessage(context, firebaseAuthException.message!);
} else {
Miscellaneous.showMessage(context, StringClass.somethingWentWrong);
}
} else {
Miscellaneous.showMessage(context, StringClass.somethingWentWrong);
}
}
Miscellaneous.dismissLoader(context);
}).timeout(Duration(seconds: 30), onTimeout: () {
Miscellaneous.dismissLoader(context);
return;
});
}
Устройство, на котором запущено приложение
Один Плюс 7 Т
Android 11