Firebaseを使用して次の動作を実現しようとしています:
- ユーザーは Firebase Authentication を使用してログインします
- ユーザーが Firebase Storage にファイルをアップロードする
- ユーザーが別のユーザーの電子メール アドレスを入力します。このユーザー アカウントは既に存在している可能性があります。そうでない場合、受信者はサインアップを促す電子メールを受け取ります。
- アップロードされたファイルは、アップロードしたユーザー (読み取り/書き込み) と、上記の電子メール アドレスを持つ他のユーザー (読み取り専用) のみが利用できるようになります。
これは私がこれまで試してきたことです:
- FirebaseAuth を使用してサインアップした後、ユーザーのメール アドレスを
uid
Real-Time Database に保存します。 - ユーザーがファイルをアップロードし、受信者の電子メール アドレスを入力した後、私は Real-Time Database でそのアドレスを確認します。存在する場合は、受信者を取得
uid
し、ファイルのメタデータに保存します。 - 私の Firebase Storage セキュリティ ルールでは、ファイル メタデータに保存されているものと
auth.uid
一致するかどうかを確認します。uid
これで問題なく動作するはずですが、ユーザー アカウントがまだ存在しない場合はどうすればよいでしょうか。
ユーザーが受信者の電子メール アドレスを入力すると、新しいアカウントを作成できます。ただし、その場合、パスワードを指定する必要があります。ランダムなパスワードを指定してパスワード リセット メールを使用することもできますが、リセット メールを完全にカスタマイズすることはできないため、ユーザー エクスペリエンスは良くありません。
新しいアカウントをすぐに作成しない場合、このメール アドレスを持つユーザーだけがファイルにアクセスできるようにするにはどうすればよいですか? ファイルのメタデータに電子メール アドレスを保存することは、後で変更される可能性があるため機能しません。
ここで複雑に考えすぎているような気がします。これを達成する簡単な方法はありますか、それとも何かを見落としていますか?
編集: もう少し調査しましたが、これを行う 1 つの方法は、Firebase Storage ガイドhereで提案されているカスタム認証トークンを使用することだと思います。ただし、それには独自の認証サーバーをセットアップする必要があり、そもそも Firebase Authentication を使用する目的が無効になります。これを達成する簡単な方法はありますか?