Unity を使用して Firebase 匿名認証を行う

Firebase で認証する一時的な匿名アカウントを、Firebase Authentication で作成して使用できます。一時的な匿名アカウントを使用すると、アプリに登録していないユーザーが、セキュリティ ルールで保護されているデータを使用できるようになります。匿名ユーザーがアプリへ登録する場合、ログイン認証情報を匿名アカウントにリンクして、以後のセッションでも引き続き、保護されているデータを使用可能にできます。

準備

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

    設定:

    事前準備

    Android

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

    iOS

    • Unity 5.0 以降
    • Xcode 8.0 以降

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

    Firebase コンソールでアプリを設定する

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

    Firebase プロジェクトを作成するには:

    1. Firebase プロジェクトをまだ用意していない場合は、Firebase コンソールで Firebase プロジェクトを作成します。[プロジェクトを追加] をクリックします。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[プロジェクト名] プルダウン メニューから選択します。それ以外の場合は、プロジェクト名を入力して新しいプロジェクトを作成します。
    2. 省略可: プロジェクト ID を編集します。プロジェクトには一意の ID が自動的に付与され、データベース URL や Firebase Hosting サブドメインなどの一般公開される Firebase の機能で使用されます。特定のサブドメインを使用する場合は、この時点でプロジェクト ID を変更できます(後で変更できません)。
    3. 残りの設定手順に沿って操作した後、[プロジェクトを作成](または既存のプロジェクトを使用している場合は [Firebase を追加])をクリックして、プロジェクト用のリソースのプロビジョニングを開始します。通常、この処理には数分かかります。処理が完了すると、プロジェクトの概要が表示されます。

    Android

    1. [Android アプリに Firebase を追加] をクリックし、設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、構成ファイルをダウンロードするだけでかまいません。
    2. 求められたら、アプリのパッケージ名を入力します。必ずアプリで使用しているパッケージ名を入力してください。パッケージ名を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
    3. 処理中に google-services.json ファイルをダウンロードします。このファイルは、いつでもダウンロードできます。
    4. 初期化コードを追加したらアプリを実行して、Firebase を正常にインストールしたという確認を Firebase コンソールに送信します。

    iOS

    1. [iOS アプリに Firebase を追加] をクリックして設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、構成ファイルをダウンロードするだけでかまいません。
    2. 求められたら、アプリのバンドル ID を入力します。必ずアプリで使用しているバンドル ID を入力してください。バンドル ID を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
    3. 処理中に GoogleService-Info.plist ファイルをダウンロードします。このファイルは、いつでもダウンロードできます。
    4. 初期化コードを追加したらアプリを実行して、Firebase を正常にインストールしたという確認を Firebase コンソールに送信します。
    5. Firebase コンソールからダウンロードした 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] をクリックします。

    SDK の初期化

    Android の Firebase Unity SDK には Google Play 開発者サービスが必要であり、SDK を使用する前に最新版にしておく必要があります。次のコードをアプリケーションの先頭に追加して、SDK で他のメソッドを呼び出す前に Google Play 開発者サービスを確認し、必要であれば、Firebase Unity SDK で必要とされるバージョンに更新します。

    Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
      var dependencyStatus = task.Result;
      if (dependencyStatus == Firebase.DependencyStatus.Available) {
        // Create and hold a reference to your FirebaseApp, i.e.
        //   app = Firebase.FirebaseApp.DefaultInstance;
        // where app is a Firebase.FirebaseApp property of your application class.
    
        // Set a flag here indicating that Firebase is ready to use by your
        // application.
      } else {
        UnityEngine.Debug.LogError(System.String.Format(
          "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
        // Firebase Unity SDK is not safe to use here.
      }
    });
    

    アプリをビルドする

    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 プロジェクトにまだ接続していない場合は、Firebase コンソールで接続します。
  • 匿名認証を有効にします。
    1. Firebase コンソールで [Auth] セクションを開きます。
    2. [ログイン方法] ページで [匿名] を有効にします。
  • Firebase 匿名認証を行う

    ログアウトしたユーザーが Firebase での認証が必要なアプリ機能を使用する場合は、次の手順に沿って匿名でのユーザーのログインを行います。

    すべての API 呼び出しは FirebaseAuth クラスを使用して行われます。このクラスには、FirebaseAuth.DefaultInstance を通じてアクセスできます。
    Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    
    1. Firebase.Auth.FirebaseAuth.SignInAnonymouslyAsync を呼び出します。
    auth.SignInAnonymouslyAsync().ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInAnonymouslyAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInAnonymouslyAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

    匿名アカウントを永久アカウントに変換する

    匿名ユーザーがアプリへ登録した後、新しいアカウントの下で引き続き従来の作業を行えるようにしなければならない場合があります。たとえば、アプリへの登録前にユーザーがショッピング カートに追加したアイテムを、新しいアカウントのショッピング カートにも入れておく、といったケースです。手順は次のとおりです。

    1. ユーザーがアプリに登録したら、ユーザーの認証プロバイダのログインフローを行います(ただし、いずれかのメソッドを呼び出す手前まで)。たとえば、ユーザーの Google ID トークン、Facebook アクセス トークン、メールアドレスとパスワードを取得します。
    2. 新しい認証プロバイダの AuthCredential を取得します。

    3. ログイン ユーザーのメソッドにオブジェクトを渡します。

    呼び出しが成功したら、ユーザーの新しいアカウントが匿名アカウントの Firebase データにアクセスできるようになります。

    次のステップ

    これで、ユーザーが Firebase で認証できるようになったため、Firebase ルールを使用して、Firebase データベースのデータへのユーザー アクセスを制御できます。

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

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