Open4
Firebaseの匿名認証触って得た知見
やりたいこと
- WebアプリでFirebaseの匿名認証を使う
- 後に永久アカウント化することを考える
- ただしあまり時間掛けたくない
はじめに考えたこと
- ユーザーがWebアプリにアクセスした時点で匿名認証する
- 後に永久アカウント化する
- Email認証は不要
- 参照したドキュメント:匿名アカウントを永久アカウントに変換する
困ったこと
-
FirebaseSDKを使用したログインフローが使えない
- 手動によるログインフローの処理 をやらないといけない
時間掛けずに簡単にやりたい!
- 手動によるログインフローだと、使いたい認証プロバイダーごとの実装が必要
linkWithPopup使う
-
JavaScript を使用してアカウントに複数の認証プロバイダをリンクする に良い解決方法があった
- 匿名認証で作成したアカウントにSNS認証でログインできるようになった!
果たしてこれで完成か?
- 匿名認証のタイミングは適切か?
- アクセスした時点で匿名認証されるので、ブラウザ変えただけで別アカウントになる
- ユーザーは既にどこかのブラウザでSNS認証をしていたとする
- 匿名認証されたアカウントでもWebアプリの全ての機能を使用できる場合を考える
- 匿名認証に気付かないで特定の操作をした場合、SNS認証したアカウントへその操作は統合できる?
- 例えば料理レシピをアップロードして全ユーザーに共有する機能を利用した場合
- 匿名アカウントでアップロードしちゃったけど、本当はSNS認証したアカウントでアップロードしたかった
- 統合には面倒な作業が必要。。。
- この場合、アクセス時点で匿名認証させるのはリスクが存在する
作戦変更
- 特定の操作をしたタイミングでのみ、匿名認証をさせる
- このタイミングでログインするかを確認する
- ログインする場合は signInWithPopup()
- ログインしない場合は signInAnonymously()
- ユーザーは自身のSignIn状態を認識できる
- このタイミングでログインするかを確認する
最終構成
- 各状態ごとの認証導線
- 非ログイン時
- ログイン:signInWithPopup()
- アカウント登録:signInWithPopup()
- 匿名アカウントログイン時
- アカウント連携:linkWithPopup()
- ログイン時
- アカウント連携:linkWithPopup()
- ログアウト
- 非ログイン時
- 匿名認証するタイミング
- 特定の操作時:signInAnonymously()