FirebaseのSDKがそのまま提供してくれている。 https://firebase.google.com/docs/auth/flutter/anonymous-auth?hl=ja
signInAnonymouslyを呼ぶ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するという仕組み。
いや〜、やっぱりめちゃくちゃ簡単でいいな・・・。