💁♂️ 【お知らせ】塾専用HP作成サービス
こんにちは、タカフミです。
最近、仕事でゲームアプリを開発することになり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上で再生アイコンをクリックして確認してみるとコンソール上に次の様な結果が返ってきました。
一見すると問題ないように思えるのですが、ユーザー識別用のユニークIDが表示されていないのが分かるかと思います。
この状態でFirebaseのAuthenticationのユーザーを確認しても、やはりアカウントは作成されていませんでした。
ユーザー作成はAndroid・iOSから行う
「コードは合っているの、どうしてだろう」と悩みながら、調べたところ、どうやらFirebaseのユーザー作成はUnityエディター上では出来ないということがわかりました。
つまり、AndroidやiOS用にビルドしたアプリから実行しないとユーザーが作成できないのです。(たぶん。。)
原因がわかり意気揚々とAndroid向けにビルドしたアプリを実行してみたのですが、それでもユーザーが作成されていませんでした。。。
諦めかけて、FirebaseのAuthページを確認したところ「ログイン方法」のページに気になるものを見つけました!
「メール/パスワード」項目のステータスが「無効」になっていました。
項目をクリックして、「有効にする」に設定して「保存」をしてみました。
これでもう一度、アンドロイドに入れたアプリを起動してみたところ、ちゃんとユーザー登録されていました!!!
この記事が少しでも誰かのお役にたてれば幸いです^_^