Вы можете интегрировать Firebase Authentication с собственной системой аутентификации, изменив свой сервер аутентификации таким образом, чтобы он генерировал пользовательские подписанные токены при успешном входе пользователя в систему. Ваше приложение получает этот токен и использует его для аутентификации в Firebase.
Прежде чем начать
Прежде чем использовать Firebase Authentication , вам необходимо:
- Зарегистрируйте свой проект Unity в проекте Firebase.
- Добавьте SDK Firebase Unity (в частности,
FirebaseAuth.unitypackage) в свой проект Unity.
Подробные инструкции по этим начальным шагам настройки вы найдете в разделе «Добавление Firebase в ваш проект Unity» .
- Получите серверные ключи вашего проекта:
- В консоли Firebase перейдите в...
> Вкладка «Учетные записи служб» . - В нижней части раздела Firebase Admin SDK нажмите «Сгенерировать новый закрытый ключ» .
- Пара открытого и закрытого ключей новой учетной записи службы автоматически сохраняется на вашем компьютере. Скопируйте этот файл на ваш сервер аутентификации.
- В консоли Firebase перейдите в...
Аутентификация с помощью Firebase
КлассFirebaseAuth является шлюзом для всех вызовов API. Доступ к нему осуществляется через FirebaseAuth.DefaultInstance .Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Вызовите метод Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync , используя токен с вашего сервера аутентификации.
- Когда пользователи входят в ваше приложение, отправьте их учетные данные (например, имя пользователя и пароль) на ваш сервер аутентификации. Ваш сервер проверяет учетные данные и возвращает пользовательский токен , если они действительны.
- После получения пользовательского токена от вашего сервера аутентификации передайте его методу
Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsyncдля авторизации пользователя:auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithCustomTokenAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithCustomTokenAsync 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.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();