public async Task <(bool successful, string message)> TryPromoteAnonAccount(string userName, string email, string password) { if (!IsAnonymous) { return(false, "Only anonymous accounts can be linked."); } try { var emailCredential = EmailProvider.GetCredential(email, password); var newUserCred = await _user.LinkWithCredentialAsync(emailCredential); if (newUserCred != null && !newUserCred.User.IsAnonymous) { await newUserCred.User.ChangeDisplayNameAsync(userName); SetUser(newUserCred); } } catch (FirebaseAuthException ex) { return(false, $"Unhandled error occured during linking up -> {ex.Reason}"); } if (!IsAnonymous) { return(true, $"Signed in as {UserName}"); } else { return(false, "Failed to link anonymous account."); } }