Я использую аутентификацию Firebase для моей игры Unity. Я пытаюсь вызвать метод для отображения ошибки после выполнения задачи SignInWithEmailAndPasswordAsync
(я ввожу неверную электронную почту), а IsFaulted
равно true .
Этот метод, который я вызываю, является ErrorTest
, и он создает список строк и вызывает DisplayError
. Однако метод DisplayError
не выполняется до конца.
Строка
Debug.Log ("Activating ErrorBox")
будет запущена (поэтому DisplayError
начнет выполняться), но ни один из остальных не будет выполнен, что означает отсутствие активации игрового объекта или второго вызова debug.log
.
В редакторе нет ошибок по этому поводу. Здесь я пробовал разные вещи, изменяя свойства текста некоторых компонентов и т. Д. Только отладочные вызовы выполняются до первой строки кода, где что-то в игре должно измениться, и метод останавливается там. Застрял в этом большое время ценить любую помощь.
Когда Errortest()
вызывается из кнопки пользовательского интерфейса, DisplayError()
функционирует правильно, он делает то, что должен, поэтому ошибка должна лежать где-то в бите асинхронной задачи, я думаю.
public void ErrorTest () {
List<string> testList = new List<string> () {"doodle", "froodle"};
DisplayError (testList);
}
public void DisplayError (List<string> displayErrorList) {
if (displayErrorList != null) {
Debug.Log ("Activating ErrorBox");
errorBox.SetActive (true);
Debug.Log ("Activated ErrorBox");
foreach (string error in displayErrorList)
errorText.text += error + "\n";
} else {
Debug.LogError ("Error list doesn't exist");
}
}
public void SignInWithPassword () {
string email = emailInput.text.Trim();
string password = passwordInput.text.Trim();
auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
ErrorTest ();
return;
}
FirebaseUser newUser = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
newUser.DisplayName, newUser.UserId);
});
}
При вводе неисправной электронной почты в журнале отладки будет отображаться вызов изнутри лямбда-выражения (исключение задачи) и первая строка метода DisplayError
. Там останавливается.
"SignInWithEmailAndPasswordAsync обнаружил ошибку: System.AggregateException: произошла одна или несколько ошибок. ---> System.AggregateException: произошла одна или несколько ошибок. ---> Firebase.FirebaseException: адрес электронной почты неправильно отформатирован."
«Активация ErrorBox»