Firebase Authentication を使用すると、ユーザーがゲームにログインする際に、メールアドレスとパスワードによるログインや、フェデレーション ID プロバイダによるログイン(Google ログインや Facebook ログインなど)などの 1 つ以上の方法を使用できるようになります。このチュートリアルでは、Firebase Authentication を使って、メールアドレスとパスワードのログインをゲームに追加する方法から始めます。
始める前に
Firebase Authentication を使用するには、次の作業が必要です。
Firebase を使用するように Unity プロジェクトを登録して構成する。
Unity プロジェクトですでに Firebase を使用している場合、この登録と構成はすでに行われています。
Unity プロジェクトがない場合は、サンプルアプリをダウンロードできます。
Unity プロジェクトに Firebase Unity SDK(具体的には
FirebaseAuth.unitypackage
)を追加する。
Firebase を Unity プロジェクトに追加するには、Firebase コンソールと開いている Unity プロジェクトの両方でタスクを行う必要があります(コンソールから Firebase 構成ファイルをダウンロードし、それを Unity プロジェクトに移動するなど)。
新しいユーザーを登録する
新規ユーザーがメールアドレスとパスワードを使用してゲームに登録できるフォームを作成します。ユーザーがフォームに入力したら、ユーザーから提供されたメールアドレスとパスワードを検証し、それらを 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.AuthResult result = task.Result;
Debug.LogFormat("Firebase user created successfully: {0} ({1})",
result.User.DisplayName, result.User.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.AuthResult result = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
result.User.DisplayName, result.User.UserId);
});
認証状態変更イベント ハンドラを設定し、ユーザーデータを取得する
ログイン イベントとログアウト イベントに応答するには、グローバル認証オブジェクトにイベント ハンドラをアタッチします。このハンドラは、ユーザーのログイン状態が変わるたびに呼び出されます。ハンドラは、認証オブジェクトが完全に初期化され、ネットワーク呼び出しが完了した後にのみ実行されるため、ログインしたユーザーに関する情報を取得するのに最適です。
FirebaseAuth
オブジェクトの StateChanged
フィールドを使用して、イベント ハンドラを登録します。ユーザーが正常にログインしたら、イベント ハンドラでそのユーザーに関する情報を取得できます。
最後に、このオブジェクトに対して Destroy
が呼び出されると、自動的に OnDestroy
が呼び出されます。OnDestroy
で Auth オブジェクトの参照をクリーンアップします。
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
&& auth.CurrentUser.IsValid();
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 ?? "";
}
}
}
void OnDestroy() {
auth.StateChanged -= AuthStateChanged;
auth = null;
}
次のステップ
他の ID プロバイダと匿名ゲスト アカウントのサポートを追加する方法を学びます。