יצירת משתמש
כדי ליצור משתמש חדש בפרויקט Firebase, צריך להפעיל את השיטה createUserWithEmailAndPassword
או להתחבר בפעם הראשונה באמצעות ספק זהויות מאוחד, כמו כניסה באמצעות חשבון Google או כניסה באמצעות חשבון 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
הוא null:
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 // ... });
אפשר גם למחוק משתמשים מהקטע Authentication (אימות) במסוף Firebase, בדף Users (משתמשים).
אימות מחדש של משתמש
כדי לבצע פעולות מסוימות שקשורות לאבטחה, כמו מחיקת חשבון, הגדרת כתובת אימייל ראשית ושינוי סיסמה, המשתמש צריך להיכנס לחשבון לאחרונה. אם מבצעים אחת מהפעולות האלה והמשתמש נכנס לחשבון לפני זמן רב מדי, הפעולה נכשלת עם שגיאה.
במקרה כזה, מבצעים אימות מחדש של המשתמש על ידי קבלת פרטי כניסה חדשים מהמשתמש והעברת פרטי הכניסה אל 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
ב-CLI של Firebase. לדוגמה:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14