Вы можете использовать Firebase Authentication , чтобы позволить пользователям аутентифицироваться в Firebase, используя свои адреса электронной почты и пароли, а также для управления учетными записями вашего приложения, основанными на паролях.
Прежде чем начать
Прежде чем использовать Firebase Authentication , вам необходимо:
Зарегистрируйте свой проект Unity и настройте его для использования Firebase.
Если ваш проект Unity уже использует Firebase, значит, он уже зарегистрирован и настроен для работы с Firebase.
Если у вас нет проекта Unity, вы можете скачать пример приложения .
Добавьте SDK Firebase Unity (в частности,
FirebaseAuth.unitypackage) в свой проект Unity.
Обратите внимание, что добавление Firebase в ваш проект Unity включает в себя действия как в консоли Firebase , так и в открытом проекте Unity (например, вы загружаете файлы конфигурации Firebase из консоли, а затем перемещаете их в свой проект Unity).
Получите доступ к классу Firebase.Auth.FirebaseAuth
Класс FirebaseAuth является шлюзом для всех вызовов API. Доступ к нему осуществляется через FirebaseAuth.DefaultInstance . Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Создайте учетную запись на основе пароля.
Чтобы создать новую учетную запись пользователя с паролем, выполните следующие действия в коде входа в ваше приложение:
- Когда новый пользователь регистрируется через форму регистрации вашего приложения, выполните все необходимые шаги проверки учетной записи, например, убедитесь, что пароль новой учетной записи введен правильно и соответствует вашим требованиям к сложности.
- Создайте новую учетную запись, передав адрес электронной почты и пароль нового пользователя в
FirebaseAuth.CreateUserWithEmailAndPassword:auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception); return; } // Firebase user has been created. Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("Firebase user created successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
Войдите в систему, используя адрес электронной почты и пароль.
Процедура входа пользователя в систему с помощью пароля аналогична процедуре создания новой учетной записи. В функции входа в систему вашего приложения выполните следующие действия:
- Когда пользователь входит в ваше приложение, передайте адрес электронной почты и пароль пользователя в метод
FirebaseAuth.SignInWithEmailAndPassword: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); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
- Вы также можете создать учетные данные и войти в систему, как и в других рабочих процессах:
Firebase.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential(email, password); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
Рекомендуется: Настройте политику паролей.
Вы можете повысить безопасность учетной записи, введя требования к сложности паролей.
Чтобы настроить политику паролей для вашего проекта, откройте раздел «Политика паролей» на вкладке «Безопасность» > «Аутентификация» > «Настройки» в консоли Firebase :
Политики паролей Firebase Authentication поддерживают следующие требования к паролям:
Требуется символ нижнего регистра
Требуется заглавная буква
Требуется числовой символ
Требуется небуквенно-цифровой символ.
Следующие символы удовлетворяют требованию к небуквенно-цифровым символам:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~Минимальная длина пароля (от 6 до 30 символов; по умолчанию — 6).
Максимальная длина пароля (4096 символов)
Вы можете включить принудительное применение политики паролей в двух режимах:
Требование : Попытки регистрации завершаются неудачей, пока пользователь не обновит свой пароль, используя пароль, соответствующий вашей политике.
Уведомление : Пользователям разрешается регистрироваться с не соответствующим требованиям паролем. При использовании этого режима следует проверить, соответствует ли пароль пользователя политике на стороне клиента, и каким-либо образом предложить пользователю обновить пароль, если он не соответствует требованиям.
Новым пользователям всегда необходимо выбирать пароль, соответствующий вашей политике.
Если у вас есть активные пользователи, мы рекомендуем не включать принудительное обновление при входе в систему, если вы не собираетесь блокировать доступ пользователям, чьи пароли не соответствуют вашей политике. Вместо этого используйте режим уведомления, который позволяет пользователям входить в систему со своими текущими паролями и информирует их о несоответствии их паролю требуемым параметрам.
Рекомендуется: включить защиту от перечисления адресов электронной почты.
Некоторые методы Firebase Authentication , принимающие адреса электронной почты в качестве параметров, выдают определенные ошибки, если адрес электронной почты не зарегистрирован, когда он должен быть зарегистрирован (например, при входе в систему с помощью адреса электронной почты и пароля), или зарегистрирован, когда он не используется (например, при изменении адреса электронной почты пользователя). Хотя это может быть полезно для предложения конкретных решений пользователям, это также может быть использовано злоумышленниками для получения адресов электронной почты, зарегистрированных вашими пользователями.
Чтобы снизить этот риск, мы рекомендуем включить защиту от перечисления адресов электронной почты для вашего проекта с помощью инструмента Google Cloud gcloud . Обратите внимание, что включение этой функции изменяет поведение Firebase Authentication в отношении сообщений об ошибках: убедитесь, что ваше приложение не зависит от более специфических ошибок.
Следующие шаги
После первого входа пользователя в систему создается новая учетная запись, которая связывается с учетными данными — то есть именем пользователя и паролем, номером телефона или информацией о поставщике аутентификации, — которые пользователь использовал для входа. Эта новая учетная запись хранится как часть вашего проекта Firebase и может использоваться для идентификации пользователя во всех приложениях вашего проекта, независимо от способа входа пользователя.
В ваших приложениях вы можете получить основную информацию профиля пользователя из объекта
Firebase.Auth.FirebaseUser:Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // The user's Id, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, if you // have one; use User.TokenAsync() instead. string uid = user.UserId; }
В правилах безопасности Firebase Realtime Database и Cloud Storage вы можете получить уникальный идентификатор пользователя, вошедшего в систему, из переменной
authи использовать его для управления доступом пользователя к данным.
Вы можете разрешить пользователям входить в ваше приложение, используя несколько поставщиков аутентификации, связав учетные данные поставщика аутентификации с существующей учетной записью пользователя.
Для выхода пользователя из системы вызовите SignOut() :
auth.SignOut();