private void SignInAndUpdate(Credential credential) { Debug.Log("We are here"); gameManager.ShowLoading(true); Auth.SignInWithCredentialAsync(credential).ContinueWith(task => { if (task.IsFaulted) { Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception); return; } User = task.Result; Debug.Log("User signed in successfully"); Firebase.Auth.Credential credentialUpdate = Firebase.Auth.EmailAuthProvider.GetCredential(Email, Password); User.LinkWithCredentialAsync(credentialUpdate).ContinueWith(UpdateCredentialTask => { if (UpdateCredentialTask.IsCanceled) { Debug.LogError("LinkWithCredentialAsync was canceled."); return; } if (UpdateCredentialTask.IsFaulted) { Debug.LogError("LinkWithCredentialAsync encountered an error: " + UpdateCredentialTask.Exception); return; } User = UpdateCredentialTask.Result; Debug.LogFormat("Credentials successfully linked to Firebase user: {0} ({1})", User.Email); }); IDictionary <string, object> updatedFields = new Dictionary <string, object> { { "Email", Email }, { "Password", Password }, { "PhoneNumber", Phone_Number }, { "Id", User.UserId }, { "Name", Name }, { "LastName", LastName }, { "Patronymic", Patronymic }, { "Birthday", Birthday }, }; Reference.Child("users").Child(User.UserId).UpdateChildrenAsync(updatedFields).ContinueWithOnMainThread(UpdateTask => { if (UpdateTask.IsFaulted) { Debug.Log("Error " + UpdateTask.Exception); } else if (UpdateTask.IsCompleted) { gameManager.Panels[2].GetComponent <Animator>().Play("SSCR Fade-out"); //Signin(Email, Password); Debug.Log("User's data was successfully updated"); PlayerPrefs.SetString(PrefsKey.RememberEmail, Email); PlayerPrefs.SetString(PrefsKey.RememberPass, Password); Reference.Child("users").Child(User.UserId).ChildChanged += HandleValueChanged; GetData(); } }); }); gameManager.ShowLoading(false); }