Я изо всех сил пытался найти решение для этого, и мне кажется, что я делаю что-то неправильно из-за моего ограниченного знания, поэтому вот проблема:
public void RegisterNewUser()
{
FetchRegisterInputValues();
if (CheckRegisterDataIntegrity())
{
_auth.CreateUserWithEmailAndPasswordAsync(_email, _password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted)
{
HandleRegistrationErrors(task.Exception);
return;
}
// Firebase user has been created.
Firebase.Auth.FirebaseUser newUser = task.Result;
Debug.LogFormat("Firebase user created successfully: {0} ({1})",
newUser.DisplayName, newUser.UserId);
});
}
else if (!CheckRegisterDataIntegrity())
{
HandleRegistrationErrors(new AggregateException("passwords do not match"));
}
}
выше - функция регистрации, которую я получил прямо из документации Firebase, она очень проста: функция FetchRegisterInputValues();
получает электронную почту и пароли, CheckRegisterDataIntegrity()
сравнивает пароль с подтверждением пароля в форме, и, наконец, HandleRegistrationErrors(task.Exception);
предназначен для запустить всплывающую панель, чтобы показать ошибку,
вот так HandleRegistrationErrors(task.Exception);
выглядит
private void HandleRegistrationErrors(AggregateException errMsg)
{
print("its here from the errors method " + errMsg.Message);
registerErrorPopup.OpenNotification();
registerErrorPopup.description = errMsg.Message;
}
он использует актив пользовательского интерфейса из хранилища активов, .OpenNotification();
запускает анимацию и выскакивает это, а затем я просто показываю сообщение.
Теперь у меня есть две проблемы , первая - когда возникает ошибка, с которой столкнулась Firebase, и условие if (task.IsFaulted)
истинно, функция HandleRegistrationErrors
должна быть вызвана, верно? ну, это именно то, что происходит, за исключением того, что вызывается только строка print("it's here from the errors method " + errMsg.Message);
, а остальная часть функции не выполняется, сначала я подумал, что это проблема с активом, но я попытался сделать это вручную (создал собственный пользовательский интерфейс с единицей и использовал метод SetActive () для запуска всплывающего окна), но опять-таки выполняется только метод печати, я думаю, что из-за CreateUserWithEmailAndPasswordAsync
является асинхронным, и я должен соответствующим образом обрабатывать ошибки, но я действительно не знаю, как go об этом и нет документации, которую я мог бы найти. Вторая проблема заключается в том, как получить правильное сообщение об ошибке, поскольку task.Exception.Message
всегда возвращает мне сообщение «Произошла одна или несколько ошибок». в то время как task.Exception
само дает правильное сообщение, но оно не отформатировано правильно.