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

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

準備

Firebase Authentication を使用するには、Firebase プロジェクトを作成してから、Firebase Unity SDK パッケージを Unity プロジェクトに追加する必要があります。

設定

事前準備

Android 版

  • Unity 5.0 以降。
  • Android NDK バージョン 10d 以降。

iOS 版

  • Unity 5.0 以降。
  • Xcode 7.0 以降。

Unity プロジェクトをまだ用意していない場合は、いずれかのクイックスタート サンプルをダウンロードし、特定の Firebase 機能をお試しいただけます。クイックスタートを使用する場合は、バンドル識別子が次のステップで必要になるため、プロジェクト設定からバンドル識別子を忘れずに取得してください。

Firebase console でアプリを設定する

アプリに Firebase を追加するには、Firebase プロジェクトと、アプリ用の Firebase 設定ファイルが必要です。

Firebase プロジェクトをまだ用意していない場合は、Firebase console で Firebase プロジェクトを作成します。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[Google プロジェクトをインポート] をクリックします。それ以外の場合は、[新規プロジェクトを作成] をクリックします。

Android 版

  1. [Android アプリに Firebase を追加] をクリックし、設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、設定ファイルをダウンロードするだけでかまいません。
  2. プロンプトが表示されたら、アプリのパッケージ名を入力します。必ずアプリで使用しているパッケージ名を入力してください。パッケージ名を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 指示されたら google-services.json ファイルをダウンロードします。このファイルはいつでも再ダウンロードできます。
  4. このファイルを、プロジェクトのアセット フォルダ内の任意の場所にコピーします。

iOS 版

  1. [iOS アプリに Firebase を追加] をクリックして設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、設定ファイルをダウンロードするだけでかまいません。
  2. 求められたら、アプリのバンドル ID を入力してください。必ずアプリで使用しているバンドル ID を入力してください。バンドル ID を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 指示されたら GoogleService-Info.plist ファイルをダウンロードします。このファイルはいつでも再ダウンロードできます。
  4. プロジェクトに GoogleService-Info.plist ファイルを追加します。

  5. Firebase console からダウンロードした GoogleService-Info.plist を Unity プロジェクトの任意のフォルダにドラッグします。

アプリに Firebase Unity SDK を追加する

  1. Firebase Unity SDK をダウンロードします。
  2. [Assets > Import Package > Custom Package] メニュー項目を選択します。
  3. 先にダウンロードした Firebase Unity SDK から FirebaseAuth.unitypackage パッケージをインポートします。
  4. [Import Unity Package] ウィンドウが表示されたら [Import] ボタンをクリックします。

アプリをビルドする

Android 版

  1. [File > Build Settings] メニュー項目を選択します。
  2. [Platform] リストから [Android] を選択します。
  3. [Switch Platform] をクリックし、ターゲット プラットフォームとして [Android] を選択します。
  4. Unity ステータスバーの右下隅にあるスピナー(コンパイル中)アイコンが停止するまで待ちます。
  5. [Build and Run] をクリックします。

iOS 版

  1. [File > Build Settings] メニュー項目を選択します。
  2. [Platform] リストから [iOS] を選択します。
  3. [Switch Platform] をクリックし、ターゲット プラットフォームとして [iOS] を選択します。
  4. Unity ステータスバーの右下隅にあるスピナー(コンパイル中)アイコンが停止するまで待ちます。
  5. [Build and Run] をクリックします。

Firebase.Auth.FirebaseAuth クラスにアクセスする

すべての API 呼び出しは FirebaseAuth クラスを使用して行われます。 このクラスには FirebaseAuth.DefaultInstance を介してアクセスできます。
    Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

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

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

  1. 新しいユーザーがアプリの登録フォームを使用して登録したら、アプリで必要な新しいアカウントの検証手順(新しいアカウントのパスワードが正しく入力されていることや、パスワードの複雑さの要件を満たしていることの確認など)を行います。
  2. 新しいユーザーのメールアドレスとパスワードを FirebaseAuth.CreateUserWithEmailAndPassword に渡して、新しいアカウントを作成します。
        auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(
          task => {
            if (!task.IsCanceled && !task.IsFaulted) {
              // User has been created.
            } else {
              // User creation has failed.
            }
          });
      

メールアドレスとパスワードを使用してユーザーのログインを行う

パスワードを使用したユーザーのログイン手順は、新しいアカウントの作成手順と似ています。アプリのログイン機能で、次の手順に沿って操作します。

  1. ユーザーがアプリにログインしたら、そのユーザーのメールアドレスとパスワードを FirebaseAuth.SignInWithEmailAndPassword に渡します。
        auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
          if (task.IsComplete && !task.IsCanceled && !task.IsFaulted) {
             // User is now signed in.
              Firebase.Auth.FirebaseUser newUser = result.Result();
          }
        });
        

次のステップ

ユーザーが初めてログインすると新しいユーザー アカウントが作成され、ユーザーがログインに使用した認証情報(ユーザー名とパスワードや認証プロバイダ情報)にリンクされます。この新しいアカウントは Firebase プロジェクトの一部として保存され、ユーザーのログイン方法にかかわらず、プロジェクトのすべてのアプリでユーザーを識別するために使用できます。

  • アプリでは、Firebase.Auth.FirebaseUser オブジェクトからユーザーの基本的なプロフィール情報を取得できます。

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photoUrl = 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.Token() instead.
      string uid = user.UID;
    }
    
  • Firebase Realtime Database と Firebase Storage のセキュリティ ルールで、ログイン済みユーザーに固有のユーザー ID を auth 変数から取得し、これを使用してユーザーがアクセスできるデータを制御できます。

既存のユーザー アカウントに認証プロバイダの認証情報をリンクすることで、ユーザーが複数の認証プロバイダを使用してアプリにログインできるようになります。

ユーザーのログアウトを行うには SignOut() を呼び出します。

auth->SignOut();

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