您可以使用 Firebase 身份驗證允許用戶使用一種或多種登錄方法(包括電子郵件地址和密碼登錄)以及聯合身份提供商(例如 Google 登錄和 Facebook 登錄)登錄您的應用。本教程通過向您展示如何將電子郵件地址和密碼登錄添加到您的應用程序,讓您開始使用 Firebase 身份驗證。
添加並初始化 Authentication SDK
如果您還沒有,請安裝 Firebase JS SDK 並初始化 Firebase 。
添加 Firebase 身份驗證 JS SDK 並初始化 Firebase 身份驗證:
網頁版 9
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);
網絡版本 8
import firebase from "firebase/app"; import "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 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 version 9
import { getAuth, createUserWithEmailAndPassword } from "firebase/auth"; const auth = getAuth(); createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const user = userCredential.user; // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // .. });
Web version 8
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 version 9
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 version 8
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 version 9
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/firebase.User const uid = user.uid; // ... } else { // User is signed out // ... } });
Web version 8
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/firebase.User var uid = user.uid; // ... } else { // User is signed out // ... } });
下一步
了解如何添加對其他身份提供者和匿名訪客帳戶的支持: