Firebase 身份验证入门
快速了解 Firebase Authentication。
Firebase Authentication 用于识别和验证应用程序的用户。这使得用户在所有设备上都能获得个性化的体验。这一功能通过 Firebase 提供的易于使用的 SDK 和现成的 UI 库实现,帮助开发者完成用户认证。
Firebase Authentication 使用 JSON Web Tokens (JWTs) 来进行用户认证。它还支持多种认证方式,例如邮箱/密码组合以及邮箱/链接组合。此外,它也支持手机号认证,以及通过 Google、Github、Twitter 等流行的联合身份提供商进行社交登录。
Firebase Authentication 可无缝集成其他 Firebase 服务。同时,它也支持 OAuth 2.0 和 OpenID Connect 等行业标准,从而可轻松与现有的认证系统或自定义后端集成。
工作原理
用户认证通常包含两个步骤:识别 和 验证。用户需要通过提供唯一标识符(如电子邮件地址)来识别自己。随后,用户需通过提供只有他们本人能访问的信息来证明身份。这些信息可以是密码,也可以是来自联合身份提供商的 OAuth token。这些凭证会通过 Firebase Authentication SDK 提供的登录方法安全地发送至服务器。Firebase 随后验证这些凭证,并将响应返回给浏览器。
在成功注册或登录后,Firebase 会为用户创建一个 Auth 实例,并生成一个唯一的认证令牌以标识每个用户。每当用户向 Firebase 资源或服务发起请求时,这些认证令牌都会随请求一同发送。Firebase 服务根据用户的权限处理这些请求并授予相应访问权限。Auth 实例还会持久化当前用户的状态,防止用户在刷新浏览器或页面时被登出。
实现方式
在使用 Firebase Authentication 之前,如同使用任何其他 Firebase 服务一样,我们需要导入并初始化 Firebase Auth 服务。我们通过从 firebase/auth 子包中导入的 getAuth 函数来完成此操作。然后,通过调用 getAuth 函数并将 Firebase App 实例作为参数传入,即可初始化 Firebase Auth 服务:
1import { initializeApp } from 'firebase/app'; 2import { getAuth } from 'firebase/auth'; 3 4 5const firebaseConfig = { 6 apiKey: "AIzaSyDNv52XXXXXXXXXXXXXXXXXXXXXX-krGF8E", 7 authDomain: "example-xxxxxxxxxxx-cfceb.firebaseapp.com", 8 projectId: "example-xxxxxxxxxxx-cfceb", 9 storageBucket: "example-xxxxxxxxxxx-cfceb.appspot.com", 10 messagingSenderId: "01234567890", 11 appId: "1:01234567890:web:8e17ea99e18ac710e7934b", 12 measurementId: "G4-HBF7IU9NPX", 13}; 14 15const firebaseApp = initializeApp(firebaseConfig); 16 17export const auth = getAuth(firebaseApp);
创建用户
Firebase 提供了多种方法来创建和登录用户。要在 Firebase 项目中使用任何登录方式,我们必须先在 Firebase 控制台中启用该登录方式。对于某些联合身份提供商,我们还需要提供额外信息,例如 Client ID 和 Client secret。这些信息可以从提供商的开发者控制台获取。