Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

Unityを使用してパスワードベースのアカウントを使用してFirebaseで認証する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Firebase認証を使用して、ユーザーがメールアドレスとパスワードを使用してFirebaseで認証できるようにしたり、アプリのパスワードベースのアカウントを管理したりできます。

あなたが始める前に

Firebase認証を使用する前に、次のことを行う必要があります。

  • Unityプロジェクトを登録し、Firebaseを使用するように設定します。

    • UnityプロジェクトがすでにFirebaseを使用している場合は、Firebase用に登録および構成されています。

    • Unityプロジェクトがない場合は、サンプルアプリをダウンロードできます。

  • UnityプロジェクトにFirebaseUnity SDK (具体的にはFirebaseAuth.unitypackage )を追加します。

UnityプロジェクトにFirebaseを追加するには、 Firebaseコンソールと開いているUnityプロジェクトの両方でタスクが必要になることに注意してください(たとえば、コンソールからFirebase構成ファイルをダウンロードしてからUnityプロジェクトに移動します)。

Firebase.Auth.FirebaseAuthクラスにアクセスします

FirebaseAuthクラスは、すべてのAPI呼び出しのゲートウェイです。 FirebaseAuth.DefaultInstanceを介してアクセスできます。
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

パスワードベースのアカウントを作成する

パスワードを使用して新しいユーザーアカウントを作成するには、アプリのログインコードで次の手順を実行します。

  1. 新しいユーザーがアプリの登録フォームを使用して登録するときは、新しいアカウントのパスワードが正しく入力され、複雑さの要件を満たしていることを確認するなど、アプリに必要な新しいアカウントの検証手順をすべて完了します。
  2. 新しいユーザーのメールアドレスとパスワードを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.FirebaseUser newUser = task.Result;
      Debug.LogFormat("Firebase user created successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    
    に渡して、新しいアカウントを作成します。

メールアドレスとパスワードを使用してユーザーにサインインします

パスワードを使用してユーザーにサインインする手順は、新しいアカウントを作成する手順と同様です。アプリのサインイン機能で、次の手順を実行します。

  1. ユーザーがアプリにサインインしたら、ユーザーのメールアドレスとパスワードを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.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    
    に渡します。
  2. 他のワークフローと同様に、クレデンシャルを作成してサインインすることもできます:
    Firebase.Auth.Credential credential =
        Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync 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;
    }
    
  • FirebaseRealtimeデータベースとCloudStorageのセキュリティルールでは、ログインしたユーザーの一意のユーザーIDをauth変数から取得し、それを使用してユーザーがアクセスできるデータを制御できます。

認証プロバイダーのクレデンシャルを既存のユーザーアカウントにリンクすることで、ユーザーが複数の認証プロバイダーを使用してアプリにサインインできるようにすることができます。

ユーザーをサインアウトするには、 SignOut()を呼び出します。

auth.SignOut();