您可以使用 Firebase 身份驗證,允許用戶使用一種或多種登錄方法登錄您的應用,包括電子郵件地址和密碼登錄,以及聯合身份提供商(例如 Google 登錄和 Facebook 登錄)。本教程向您展示如何向您的應用添加電子郵件地址和密碼登錄,幫助您開始使用 Firebase 身份驗證。
添加並初始化認證SDK
添加 Firebase 身份驗證 JS SDK 並初始化 Firebase 身份驗證:
網絡模塊化API
import { initializeApp } from "firebase/app"; import { getAuth } from "firebase/auth"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Firebase Authentication and get a reference to the service const auth = getAuth(app);
Web 命名空間 API
import firebase from "firebase/compat/app"; import "firebase/compat/auth"; // TODO: Replace the following with your app's Firebase project configuration // See: https://firebase.google.com/docs/web/learn-more#config-object const firebaseConfig = { // ... }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Firebase Authentication and get a reference to the service const auth = firebase.auth();
(可選)使用 Firebase 本地模擬器套件進行原型設計和測試
在討論您的應用如何對用戶進行身份驗證之前,我們先介紹一組可用於原型設計和測試身份驗證功能的工具:Firebase Local Emulator Suite。如果您正在選擇身份驗證技術和提供商,使用身份驗證和 Firebase 安全規則嘗試使用公共和私有數據的不同數據模型,或者對登錄 UI 設計進行原型設計,那麼能夠在本地工作而無需部署實時服務可能是一個好主意。
身份驗證模擬器是本地模擬器套件的一部分,它使您的應用程序能夠與模擬數據庫內容和配置以及可選的模擬項目資源(函數、其他數據庫和安全規則)進行交互。
使用身份驗證模擬器只需幾個步驟:
- 將一行代碼添加到應用程序的測試配置中以連接到模擬器。
- 從本地項目目錄的根目錄中,運行
firebase emulators:start
。 - 使用本地模擬器套件 UI 進行交互式原型設計,或使用身份驗證模擬器 REST API 進行非交互式測試。
詳細指南可在將您的應用程序連接到身份驗證模擬器中找到。有關詳細信息,請參閱本地模擬器套件簡介。
現在讓我們繼續了解如何對用戶進行身份驗證。
註冊新用戶
創建一個表單,允許新用戶使用他們的電子郵件地址和密碼在您的應用程序中註冊。當用戶填寫表單時,驗證用戶提供的電子郵件地址和密碼,然後將它們傳遞給createUserWithEmailAndPassword
方法:
Web modular API
import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed up const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // .. });
Web namespaced API
firebase.auth().createUserWithEmailAndPassword(email, password) .then((userCredential) => { // Signed in var user = userCredential.user; // ... }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // .. });
登錄現有用戶
創建一個表單,允許現有用戶使用其電子郵件地址和密碼登錄。當用戶完成表單後,調用signInWithEmailAndPassword
方法:
Web modular API
import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); signInWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; });
Web namespaced API
firebase.auth().signInWithEmailAndPassword(email, password) .then((userCredential) => { // Signed in var user = userCredential.user; // ... }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; });
設置認證狀態觀察者並獲取用戶數據
對於需要登錄用戶信息的每個應用頁面,將觀察者附加到全局身份驗證對象。每當用戶的登錄狀態發生變化時,就會調用此觀察者。
使用onAuthStateChanged
方法附加觀察者。當用戶成功登錄後,您可以在觀察者中獲取有關該用戶的信息。
Web modular API
import { getAuth, onAuthStateChanged } 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 // ... } });
Web namespaced API
firebase.auth().onAuthStateChanged((user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
下一步
了解如何添加對其他身份提供商和匿名訪客帳戶的支持: