追記
拙稿にて解決しました!
必要要件
firebase firestore とfirebase auth。
基本仕様
- SNSっぽく会員登録および認証を使う=firebase auth
- 但しログインしていなくても各アカウントのニックネームとか可視範囲がある=firebase firestore
アカウント登録画面の仕様(追々修正した結果)
- メルアド入力
- firebase authの機能で認証メール発信
- メール内URLからアプリを開いたら、仮パスワードにてアカウントを登録
- プロフィール登録画面を強制的に展開するのでパスワードを改めて登録
ハマりどころ
- firebaseに慣れておらずユーザ情報とかfirestoreでよくなくね?と作業を進めるも
- 本来はauthで認証しないでfirestoreを大公開するのはセキュリティ上あまりオススメしていない
- そもそもauthを使わないと認証メールが飛ばせない
- そこで後からauthを使うよう修正
- ユーザの再認証が解っておらず、結果アカウント登録認証メールは飛んだものの、パスワードの設定やアカウント削除ができない
Firebase でユーザーを管理する
createUserWithEmailAndPassword メソッドを呼び出すか、 Google ログインや Facebook ログイン などのフェデレーション ID プロバイダを使用してユーザーが初めてログインすると、Firebase プロジェクトに新しいユーザーが作成されます。 Firebase コンソールの [Authentication] セクションにある [ユーザー] ページで、または Admin SDK を使用して、パスワードで認証される新しいユーザーを作成することもできます。 現在ログインしているユーザーを取得するには、Auth オブジェクトでオブザーバーを設定することをおすすめします。 firebase.auth().onAuthStateChanged(function(user) { if (user) { // User is signed in. } else { // No user is signed in.
試行錯誤の結果把握できたfirebase authとfirestoreに置いた可視範囲の使い方
- まずfirebase authでアカウントをよしなに登録
- authで登録したuidをfirestoreのusersコレクションのdocument idにつけるなりして、可視範囲を登録
ここまで使って思ったのが、先程のユーザの再認証がネックになりうるのではないかと
パスワードを完全に忘れて認証ができない状態に陥ってしまうと、実質何もできない。
だがこのサービスっていかにもパスワード忘れそうなユーザー層な気がw
こんなん悩むの私だけかもしれないが、ほんと悩んだ。
取り敢えずこの正解をなんとか見つけたい。
パスワードを平文で持っちゃ意味ないんだけど、firestoreに持つやつなのか。
まあ誰か解決してる先人がいるかも知れない。ひとまず頭を一瞬切り替えよう。
コメント