Google 致力于为黑人社区推动种族平等。查看具体举措

Выполните аутентификацию с помощью Firebase, используя настраиваемую систему аутентификации и Unity

Вы можете интегрировать аутентификацию Firebase с пользовательской системой аутентификации, изменив свой сервер аутентификации для создания пользовательских подписанных токенов, когда пользователь успешно входит в систему. Ваше приложение получает этот токен и использует его для аутентификации в Firebase.

Прежде чем вы начнете

  1. Перед тем, как можно использовать Firebase аутентификации , вам необходимо:

    • Зарегистрируйте свой проект Unity в своем проекте Firebase.
    • Добавьте Firebase Unity SDK ( в частности, FirebaseAuth.unitypackage ) для вашего проекта Unity.

    Подробные инструкции для этих начальных шагов установки в Add Firebase для вашего проекта Unity .

  2. Получите серверные ключи вашего проекта:
    1. Перейти к Учетные записи служб страницы в настройках вашего проекта.
    2. Нажмите кнопку Создать новый секретный ключ в нижней части секции Firebase Admin SDK страницы Учетные записи служб.
    3. Пара открытого и закрытого ключей новой учетной записи службы автоматически сохраняется на вашем компьютере. Скопируйте этот файл на свой сервер аутентификации.

Аутентифицироваться с Firebase

FirebaseAuth класс является шлюзом для всех вызовов API. Это через , доступное FirebaseAuth.DefaultInstance .
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Вызов Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync с жетоном с сервера аутентификации.

  1. Когда пользователи входят в ваше приложение, отправьте свои учетные данные для входа (например, свое имя пользователя и пароль) на ваш сервер аутентификации. Ваш сервер проверяет полномочия и возвращает пользовательский маркер , если они действительны.
  2. После того, как вы получите пользовательский лексема с сервера аутентификации, передать его 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.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.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 Cloud Storage правил безопасности , вы можете получить подписанный в уникальном пользователя идентификатор пользователя из auth переменной и использовать его , чтобы контролировать , какие данные пользователь заходит может.

Вы можете позволить пользователям входить в ваше приложение с помощью нескольких поставщиков проверки подлинности с помощью ссылки AUTH учетных данных поставщика к существующему учетной записи пользователя.

Чтобы выйти пользователь, вызовите SignOut() :

auth.SignOut();