停止失去 86% 的移动用户:使用 Firebase 的 Lazy Auth(教程)
Source: Dev.to
3 亿美元的问题 💸
著名的 “3 亿美元按钮” 案例证明,强制用户在结账前注册会导致收入锐减。在移动端,情况更糟——高达 86 % 的用户在遇到立即登录的墙时会放弃应用。
解决方案: 懒注册(或 “即时” 认证)。
在本快速教程中,你将学习如何:
- 首先以 匿名 方式登录,让用户无需任何阻力即可开始使用应用。
- 仅在用户需要保存工作时才提示输入凭证,将匿名账户升级,而不是创建新账户。
使用 Firebase 实现匿名登录
Firebase 提供了一种方法,可以在不向用户索要任何数据的情况下创建临时、持久的会话。
文档:
import { getAuth, signInAnonymously } from "firebase/auth";
const auth = getAuth();
// 1. 静默登录
await signInAnonymously(auth);
// 2. 监听认证状态(用户 ID 在刷新后仍然保留!)
auth.onAuthStateChanged((user) => {
if (user && user.isAnonymous) {
console.log("User is a Guest 👻", user.uid);
}
});
升级匿名账户
当用户决定注册(例如,为了保存设置)时,你 不会创建新账户。相反,你将新的凭证链接到已有的匿名用户,保留 uid 以及与之关联的所有 Firestore 数据。
文档:
import { EmailAuthProvider, linkWithCredential } from "firebase/auth";
const upgradeAccount = async (email, password) => {
const credential = EmailAuthProvider.credential(email, password);
const user = auth.currentUser;
try {
// 将新凭证合并到现有的匿名账户中
const result = await linkWithCredential(user, credential);
console.log("Guest upgraded to Permanent User! 🎉");
} catch (error) {
console.error("Error linking account:", error);
}
};
清理被遗弃的访客账户
匿名认证的一个缺点是可能会积累成千上万的未使用访客账户。你可以通过启用 Google Cloud Identity Platform 并设置自动删除策略(例如,删除 30 天未活跃的匿名用户),来自动清除这些账户,而无需编写自定义脚本。
文档:
(此处可添加相关文档链接)
进一步阅读
我在个人博客上写了一篇详细的深度分析,内容包括:
- React Hooks 实现方式。
- 处理
credential-already-in-use错误。 - Identity Platform 配置的截图。
- 使用我的 Windows CLI 学习应用的现场演示。
👉 阅读完整文章并查看指导截图: Lazy Registrations with Firebase
你在应用中实现过延迟认证吗?