Unity で Firebase Authentication を使ってみる

Firebase Authentication を使用すると、ユーザーがアプリにログインする際に、メールアドレスとパスワードのログイン、Google ログインや Facebook ログインなどのフェデレーション ID プロバイダなど、複数のログイン方法を使用できるようになります。このチュートリアルでは、Firebase Authentication を使って、メールアドレスとパスワードのログインをゲームに追加する方法から始めます。

アプリを Firebase に接続する

Firebase SDK をインストールします。

新しいユーザーを登録する

新規ユーザーがメールアドレスとパスワードを使用してゲームに登録できるフォームを作成します。ユーザーがフォームに入力したら、ユーザーから提供されたメールアドレスとパスワードを検証し、それらを CreateUserWithEmailAndPasswordAsync メソッドに渡します。

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);
});

既存のユーザーをログインさせる

既存のユーザーがメールアドレスとパスワードを使用してログインできるフォームを作成します。ユーザーがフォームに入力したら、SignInWithEmailAndPasswordAsync メソッドを呼び出します。

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);
});

認証状態変更イベント ハンドラを設定し、ユーザーデータを取得する

ログイン イベントとログアウト イベントに応答するには、グローバル認証オブジェクトにイベント ハンドラをアタッチします。このハンドラは、ユーザーのログイン状態が変わるたびに呼び出されます。ハンドラは、認証オブジェクトが完全に初期化され、ネットワーク呼び出しが完了した後にのみ実行されるため、ログインしたユーザーに関する情報を取得するのに最適です。

FirebaseAuth オブジェクトの StateChanged フィールドを使用して、イベント ハンドラを登録します。ユーザーが正常にログインしたら、イベント ハンドラでそのユーザーに関する情報を取得できます。

void InitializeFirebase() {
  auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
  auth.StateChanged += AuthStateChanged;
  AuthStateChanged(this, null);
}

void AuthStateChanged(object sender, System.EventArgs eventArgs) {
  if (auth.CurrentUser != user) {
    bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null;
    if (!signedIn && user != null) {
      DebugLog("Signed out " + user.UserId);
    }
    user = auth.CurrentUser;
    if (signedIn) {
      DebugLog("Signed in " + user.UserId);
      displayName = user.DisplayName ?? "";
      emailAddress = user.Email ?? "";
      photoUrl = user.PhotoUrl ?? "";
    }
  }
}

次のステップ

他の ID プロバイダと匿名ゲスト アカウントのサポートを追加する方法を学びます。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。