FirebaseのSDKがそのまま提供してくれている。 https://firebase.google.com/docs/auth/flutter/anonymous-auth?hl=ja

  1. signInAnonymouslyを呼ぶ
  2. onAuthStateChangedに登録したコールバックでuserオブジェクトを取得できる
import { getAuth, onAuthStateChanged, signInAnonymously } from "firebase/auth";  
  
const auth = getAuth();  
 
onAuthStateChanged(auth, (user) => {
  if (user) {
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/auth.user
    const uid = user.uid;
    // ...
  } else {
    // User is signed out
    // ...
  }  
});
 
signInAnonymously(auth).then(() => {
  // Signed in..
}).catch((error) => {
  const errorCode = error.code;
  const errorMessage = error.message;
  // ... 
});

簡単。

しかも昇格もできる。(Firebaseでは「匿名ユーザの永久ユーザへの変換」という表現)

import { getAuth, EmailAuthProvider, linkWithCredential } from "firebase/auth";  
  
const credential = EmailAuthProvider.credential(email, password); // google, facebook, etc...
 
const auth = getAuth();  
linkWithCredential(auth.currentUser, credential).then((usercred) => {
  const user = usercred.user;
  console.log("Anonymous account successfully upgraded", user);  }).catch((error) => {
  console.log("Error upgrading anonymous account", error);
});

FooAuthProviderからクレデンシャルを取得して、それを匿名ユーザとlinkするという仕組み。

いや〜、やっぱりめちゃくちゃ簡単でいいな・・・。