UnityでFirebaseを使う時にハマった話

こんにちは、タカフミです。

最近、仕事でゲームアプリを開発することになりUnityの勉強を始めました。

ユーザー認証やDB周りの厄介なことはFirebaseにお任せしようと思い、先日Firebaseから配信されたUnity用のSDKをインストールしてみたのですが、Unityが不慣れなこともありなかなか上手くいきませんでした。

今回はみなさんが同じ轍を踏まないよう起きた問題と解決策を共有していきたいと思います。

まずはここを参考にしましょう

GoogleはUnityへFirebaseを導入する方法について、とっても分かりやすい動画とスタートガイドを用意しています。さすがGoogle様です。

基本的にはそれに従って貰えれば問題ないのですが、なぜかエラーがでて上手くいかない場面がありました。

 

The Firebase Database and Storage require the full .Net 2.0 SDK に遭遇

上の動画に従った後で、Firebaseの特徴でもあるRealtimeDBを使うために、FirebaseDatabaseパッケージをインストールした後に次の様なエラーが表示されました。

The Firebase Database and Storage require the full .Net 2.0 SDK

こんな時は、Unityを一度終了させて再起動することをオススメします。

自動的に必要なファイルをインストールしてくれます。

 

Firebase.Authを使ったユーザー登録ができない

Firebaseではメールアドレスをパスワードを使ったユーザー登録が簡単に行えます。

Firebaseのドキュメントに紹介されているコードを参考にして、ユーザー登録を試してみたのですが上手くいきませんでした。

実際に使用したコードはこちらです。

 


		Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

		string email = "foo@gmail.com";
		string password = "foo123456";

		auth.CreateUserWithEmailAndPasswordAsync (email, password).ContinueWith (task => {
			if(task.IsCanceled) {
				Debug.LogError("It 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);
		});

 

このコードを入力して、Unity上で再生アイコンをクリックして確認してみるとコンソール上に次の様な結果が返ってきました。

FirebaseとunityのAuthエラー

 

一見すると問題ないように思えるのですが、ユーザー識別用のユニークIDが表示されていないのが分かるかと思います。

この状態でFirebaseのAuthenticationのユーザーを確認しても、やはりアカウントは作成されていませんでした。

 

ユーザー作成はAndroid・iOSから行う

「コードは合っているの、どうしてだろう」と悩みながら、調べたところ、どうやらFirebaseのユーザー作成はUnityエディター上では出来ないということがわかりました。

つまり、AndroidやiOS用にビルドしたアプリから実行しないとユーザーが作成できないのです。(たぶん。。)

 

原因がわかり意気揚々とAndroid向けにビルドしたアプリを実行してみたのですが、それでもユーザーが作成されていませんでした。。。

 

諦めかけて、FirebaseのAuthページを確認したところ「ログイン方法」のページに気になるものを見つけました!

メール/パスワード」項目のステータスが「無効」になっていました。

 

 

unity2-2

 

項目をクリックして、「有効にする」に設定して「保存」をしてみました。

unity3

 

これでもう一度、アンドロイドに入れたアプリを起動してみたところ、ちゃんとユーザー登録されていました!!!

unity4

 

この記事が少しでも誰かのお役にたてれば幸いです^_^