質問: こんにちは。 iOSアプリでFirebaseを勉強しようとしています。 単純にAuthenticationを利用したアカウント登録、ログインや FireStoreからのデータ操作は出来たのですが、Authenticationでアカウント登録しても、実際に利用する情報の登録はFireStoreを利用するので、FireStoreにもusersコレクションを作成したいと思っています。 アプリ内でAuthenticationでアカウント登録完了のレスポンスを確認したら、FireStoreのusersにレスポンスで返ってきたユーザーUIDをドキュメントキーにして、フィールド情報と合わせて新しいドキュメンとの登録。 ということを行うしか無いのでしょうか? 良くない実装方法かな?と思い、小一時間調べてみたのですが疑問を解消するような内容を見つけれなかったために、投稿させてもらいました。 よろしければ、何かアドバイスをいただけると嬉しいです! 以下、teratailさんのテンプレートに沿って記載した内容になります。 ### 前提・実現したいこと ■実現したいこと FirebaseのAuthenticationでのユーザー登録と同時にFireStoreのusersコレクションにサービス固有のアカウント情報を作成し、関連付けをしたい。 ■前提 FireBase側 ・Authenticationを利用してアカウント登録、ログインさせる。(とりあえずメールアドレスでの作成) ・Cloud FireStoreで「users」コレクションを作成しユーザー名や生年月日などのフィールドを作成。 アプリ側 ・メールアドレスとパスワードを入力し、アカウント登録をする。(Authentication利用) ・登録が出来たら、サービス固有の情報を入力し登録する。(FireStoreのドキュメントへ保存) よろしくおねがいします。
回答: > > アプリ内でAuthenticationでアカウント登録完了のレスポンスを確認したら、FireStoreのusersにレスポンスで返ってきたユーザーUIDをドキュメントキーにして、フィールド情報と合わせて新しいドキュメンとの登録。 > > ということを行うしか無いのでしょうか? > > > いいえ、**アカウント登録完了**以外にも、ユーザーを取得できる**任意のタイミング**でFirestoreのドキュメントを作成できます。 ユーザーの取得方法は次のドキュメントを確認ください。 後半の「ユーザーUIDをドキュメントキーにして、フィールド情報と合わせて新しいドキュメンとの登録」という認識は正しいと思いますので、アプリの仕様に合わせて任意のタイミングでユーザーを取得しドキュメントを作成すれば良いです。 ちなみに、ユーザー作成時にFunctionsでトリガーしてFirestoreのドキュメントを登録することもできますが、懸念事項が増えるので個人的にはおすすめしません。