สร้างผู้ใช้
คุณสร้างผู้ใช้ใหม่ในโปรเจ็กต์ Firebase โดยเรียกใช้เมธอด
createUserWithEmailAndPassword
หรือด้วยการลงชื่อเข้าใช้ให้กับผู้ใช้เป็นครั้งแรกโดยใช้ข้อมูลประจำตัวแบบรวมศูนย์
เช่น Google Sign-In หรือ
เข้าสู่ระบบ Facebook
นอกจากนี้ คุณยังสามารถสร้างผู้ใช้ที่ตรวจสอบสิทธิ์ด้วยรหัสผ่านใหม่ได้จากการตรวจสอบสิทธิ์ ของคอนโซล Firebase ในหน้าผู้ใช้ หรือโดยใช้ Admin SDK
รับผู้ใช้ที่ลงชื่อเข้าใช้อยู่ในขณะนี้
วิธีที่แนะนำเพื่อให้ได้ผู้ใช้รายปัจจุบันคือ โดยการตั้งผู้สังเกตการณ์ใน ออบเจ็กต์การตรวจสอบสิทธิ์:
Web
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
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 // ... } });
การใช้ผู้สังเกตการณ์จะทำให้คุณมั่นใจได้ว่าออบเจ็กต์การตรวจสอบสิทธิ์ไม่ได้อยู่ในตัวกลาง
เช่น การเริ่มต้น เมื่อคุณได้รับผู้ใช้ปัจจุบัน เมื่อคุณ
ใช้ signInWithRedirect
ผู้สังเกตการณ์ onAuthStateChanged
จะรอจนกว่า
getRedirectResult
แก้ปัญหาก่อนทริกเกอร์
นอกจากนี้ คุณยังหาผู้ใช้ที่ลงชื่อเข้าใช้อยู่ได้โดยใช้ currentUser
หากผู้ใช้ไม่ได้ลงชื่อเข้าใช้ currentUser
จะเป็นค่าว่าง:
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/auth.user // ... } else { // No user is signed in. }
Web
const user = firebase.auth().currentUser; if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/v8/firebase.User // ... } else { // No user is signed in. }
รับโปรไฟล์ของผู้ใช้
หากต้องการรับข้อมูลโปรไฟล์ของผู้ใช้ ให้ใช้พร็อพเพอร์ตี้ของอินสแตนซ์
User
เช่น
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; if (user !== null) { // The user object has basic properties such as display name, email, etc. const displayName = user.displayName; const email = user.email; const photoURL = user.photoURL; const emailVerified = user.emailVerified; // The user's ID, unique to the Firebase project. Do NOT use // this value to authenticate with your backend server, if // you have one. Use User.getToken() instead. const uid = user.uid; }
Web
const user = firebase.auth().currentUser; if (user !== null) { // The user object has basic properties such as display name, email, etc. const displayName = user.displayName; const email = user.email; const photoURL = user.photoURL; const emailVerified = user.emailVerified; // The user's ID, unique to the Firebase project. Do NOT use // this value to authenticate with your backend server, if // you have one. Use User.getIdToken() instead. const uid = user.uid; }
รับข้อมูลโปรไฟล์เฉพาะผู้ให้บริการของผู้ใช้
วิธีดึงข้อมูลโปรไฟล์จากผู้ให้บริการที่ลงชื่อเข้าใช้ที่ลิงก์กับ
ให้ใช้พร็อพเพอร์ตี้ providerData
เช่น
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; if (user !== null) { user.providerData.forEach((profile) => { console.log("Sign-in provider: " + profile.providerId); console.log(" Provider-specific UID: " + profile.uid); console.log(" Name: " + profile.displayName); console.log(" Email: " + profile.email); console.log(" Photo URL: " + profile.photoURL); }); }
Web
const user = firebase.auth().currentUser; if (user !== null) { user.providerData.forEach((profile) => { console.log("Sign-in provider: " + profile.providerId); console.log(" Provider-specific UID: " + profile.uid); console.log(" Name: " + profile.displayName); console.log(" Email: " + profile.email); console.log(" Photo URL: " + profile.photoURL); }); }
อัปเดตโปรไฟล์ของผู้ใช้
คุณสามารถอัปเดตข้อมูลโปรไฟล์พื้นฐานของผู้ใช้ได้ เช่น ชื่อที่แสดงของผู้ใช้
และ URL ของรูปโปรไฟล์ด้วยเมธอด updateProfile
เช่น
Web
import { getAuth, updateProfile } from "firebase/auth"; const auth = getAuth(); updateProfile(auth.currentUser, { displayName: "Jane Q. User", photoURL: "https://example.com/jane-q-user/profile.jpg" }).then(() => { // Profile updated! // ... }).catch((error) => { // An error occurred // ... });
Web
const user = firebase.auth().currentUser; user.updateProfile({ displayName: "Jane Q. User", photoURL: "https://example.com/jane-q-user/profile.jpg" }).then(() => { // Update successful // ... }).catch((error) => { // An error occurred // ... });
ตั้งค่าอีเมลของผู้ใช้
คุณสามารถตั้งค่าอีเมลของผู้ใช้ได้โดยใช้เมธอด updateEmail
เช่น
Web
import { getAuth, updateEmail } from "firebase/auth"; const auth = getAuth(); updateEmail(auth.currentUser, "user@example.com").then(() => { // Email updated! // ... }).catch((error) => { // An error occurred // ... });
Web
const user = firebase.auth().currentUser; user.updateEmail("user@example.com").then(() => { // Update successful // ... }).catch((error) => { // An error occurred // ... });
ส่งอีเมลยืนยันให้ผู้ใช้
คุณสามารถส่งอีเมลยืนยันที่อยู่ให้กับผู้ใช้ที่มี
sendEmailVerification
วิธี เช่น
Web
import { getAuth, sendEmailVerification } from "firebase/auth"; const auth = getAuth(); sendEmailVerification(auth.currentUser) .then(() => { // Email verification sent! // ... });
Web
firebase.auth().currentUser.sendEmailVerification() .then(() => { // Email verification sent! // ... });
คุณสามารถปรับแต่งเทมเพลตอีเมลที่ใช้ในส่วนการตรวจสอบสิทธิ์ของ คอนโซล Firebase ในหน้าเทมเพลตอีเมล ดูเทมเพลตอีเมลใน ศูนย์ช่วยเหลือของ Firebase
นอกจากนี้ ยังสามารถส่งผ่านสถานะ URL ต่อ เพื่อเปลี่ยนเส้นทางกลับ เมื่อส่งอีเมลยืนยัน
นอกจากนี้ คุณสามารถแปลอีเมลยืนยันโดยการอัปเดตภาษา ในอินสแตนซ์การตรวจสอบสิทธิ์ก่อนส่งอีเมล เช่น
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
ตั้งรหัสผ่านของผู้ใช้
คุณตั้งรหัสผ่านของผู้ใช้ได้ด้วยเมธอด updatePassword
เช่น
Web
import { getAuth, updatePassword } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; const newPassword = getASecureRandomPassword(); updatePassword(user, newPassword).then(() => { // Update successful. }).catch((error) => { // An error ocurred // ... });
Web
const user = firebase.auth().currentUser; const newPassword = getASecureRandomPassword(); user.updatePassword(newPassword).then(() => { // Update successful. }).catch((error) => { // An error ocurred // ... });
ส่งอีเมลรีเซ็ตรหัสผ่าน
คุณส่งอีเมลรีเซ็ตรหัสผ่านไปยังผู้ใช้ด้วย sendPasswordResetEmail
ได้
เช่น
Web
import { getAuth, sendPasswordResetEmail } from "firebase/auth"; const auth = getAuth(); sendPasswordResetEmail(auth, email) .then(() => { // Password reset email sent! // .. }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // .. });
Web
firebase.auth().sendPasswordResetEmail(email) .then(() => { // Password reset email sent! // .. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // .. });
คุณสามารถปรับแต่งเทมเพลตอีเมลที่ใช้ในส่วนการตรวจสอบสิทธิ์ของ คอนโซล Firebase ในหน้าเทมเพลตอีเมล ดูเทมเพลตอีเมลใน ศูนย์ช่วยเหลือของ Firebase
นอกจากนี้คุณยังส่งผ่านสถานะ URL ต่อ เพื่อเปลี่ยนเส้นทางกลับ ไปยังแอปเมื่อส่งอีเมลรีเซ็ตรหัสผ่าน
นอกจากนี้ คุณสามารถแปลอีเมลรีเซ็ตรหัสผ่านโดยอัปเดตภาษา ในอินสแตนซ์การตรวจสอบสิทธิ์ก่อนส่งอีเมล เช่น
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
นอกจากนี้คุณยังส่งอีเมลการรีเซ็ตรหัสผ่านจากคอนโซล Firebase ได้ด้วย
ลบผู้ใช้
คุณลบบัญชีผู้ใช้ได้ด้วยเมธอด delete
เช่น
Web
import { getAuth, deleteUser } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; deleteUser(user).then(() => { // User deleted. }).catch((error) => { // An error ocurred // ... });
Web
const user = firebase.auth().currentUser; user.delete().then(() => { // User deleted. }).catch((error) => { // An error ocurred // ... });
นอกจากนี้ คุณยังสามารถลบผู้ใช้จากส่วนการตรวจสอบสิทธิ์ของ คอนโซล Firebase ในหน้าผู้ใช้
ตรวจสอบสิทธิ์ผู้ใช้อีกครั้ง
การดำเนินการบางอย่างที่มีความละเอียดอ่อนต่อความปลอดภัย เช่น
การลบบัญชี
การตั้งค่าที่อยู่อีเมลหลัก และ
เปลี่ยนรหัสผ่าน - ผู้ใช้ต้อง
ลงชื่อเข้าใช้เมื่อเร็วๆ นี้ หากคุณดำเนินการอย่างใดอย่างหนึ่งข้างต้น และผู้ใช้ลงชื่อเข้าใช้
นานเกินไป การดำเนินการล้มเหลวโดยมีข้อผิดพลาด
ในกรณีนี้ ให้ตรวจสอบสิทธิ์ผู้ใช้อีกครั้งโดยรับข้อมูลเข้าสู่ระบบสำหรับลงชื่อเข้าใช้ใหม่
จากผู้ใช้และส่งข้อมูลเข้าสู่ระบบไปยัง reauthenticateWithCredential
เช่น
Web
import { getAuth, reauthenticateWithCredential } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; // TODO(you): prompt the user to re-provide their sign-in credentials const credential = promptForCredentials(); reauthenticateWithCredential(user, credential).then(() => { // User re-authenticated. }).catch((error) => { // An error ocurred // ... });
Web
const user = firebase.auth().currentUser; // TODO(you): prompt the user to re-provide their sign-in credentials const credential = promptForCredentials(); user.reauthenticateWithCredential(credential).then(() => { // User re-authenticated. }).catch((error) => { // An error occurred // ... });
นำเข้าบัญชีผู้ใช้
คุณนำเข้าบัญชีผู้ใช้จากไฟล์ไปยังโปรเจ็กต์ Firebase ได้โดยใช้
คำสั่ง auth:import
ของ Firebase CLI เช่น
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14