יצירת משתמש
יוצרים משתמש חדש בפרויקט Firebase באמצעות קריאה
createUserWithEmailAndPassword
או על ידי כניסה של משתמש בפעם הראשונה באמצעות זהות מאוחדת
ספק, כמו כניסה באמצעות חשבון Google או
התחברות ל-Facebook.
אפשר גם ליצור משתמשים חדשים שמאומתים באמצעות סיסמה דרך 'אימות' במסוף Firebase, בדף 'משתמשים', או באמצעות Admin SDK.
איתור המשתמש שמחובר כרגע
הדרך המומלצת לקבל את המשתמש הנוכחי היא להגדיר משתמש שמתבונן באובייקט Auth:
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 // ... } });
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:
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. }
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
לדוגמה:
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; }
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
. לדוגמה:
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); }); }
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
. לדוגמה:
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 // ... });
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
. לדוגמה:
import { getAuth, updateEmail } from "firebase/auth"; const auth = getAuth(); updateEmail(auth.currentUser, "user@example.com").then(() => { // Email updated! // ... }).catch((error) => { // An error occurred // ... });
const user = firebase.auth().currentUser; user.updateEmail("user@example.com").then(() => { // Update successful // ... }).catch((error) => { // An error occurred // ... });
שליחת הודעת אימות למשתמש
אפשר לשלוח למשתמש אימייל לאימות כתובת באמצעות השיטה sendEmailVerification
. לדוגמה:
import { getAuth, sendEmailVerification } from "firebase/auth"; const auth = getAuth(); sendEmailVerification(auth.currentUser) .then(() => { // Email verification sent! // ... });
firebase.auth().currentUser.sendEmailVerification() .then(() => { // Email verification sent! // ... });
אפשר להתאים אישית את תבנית האימייל שבה נעשה שימוש בקטע 'אימות' ב- במסוף Firebase, בדף 'תבניות אימייל'. מידע נוסף זמין בקטע תבניות אימייל ב- מרכז העזרה של Firebase.
אפשר גם להעביר מצב דרך המשך כתובת אתר כדי להפנות חזרה לאפליקציה כשתשלחו הודעת אימות.
בנוסף, אפשר להתאים את הודעת האימות לשוק המקומי על ידי עדכון השפה במכונה לאימות לפני שליחת האימייל. לדוגמה:
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
איך מגדירים סיסמה למשתמש
אפשר להגדיר סיסמה של משתמש באמצעות השיטה updatePassword
. לדוגמה:
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 // ... });
const user = firebase.auth().currentUser; const newPassword = getASecureRandomPassword(); user.updatePassword(newPassword).then(() => { // Update successful. }).catch((error) => { // An error ocurred // ... });
שליחת אימייל לאיפוס הסיסמה
אפשר לשלוח למשתמש אימייל על איפוס סיסמה באמצעות sendPasswordResetEmail
. לדוגמה:
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; // .. });
firebase.auth().sendPasswordResetEmail(email) .then(() => { // Password reset email sent! // .. }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; // .. });
אפשר להתאים אישית את תבנית האימייל שמשמשת בקטע Authentication (אימות) במסוף Firebase, בדף Email Templates (תבניות אימייל). מידע נוסף זמין בקטע תבניות אימייל ב- מרכז העזרה של Firebase.
אפשר גם להעביר מצב דרך המשך כתובת אתר כדי להפנות חזרה לאפליקציה כשאתם שולחים אימייל לאיפוס סיסמה.
בנוסף, אפשר להתאים את האימייל לאיפוס הסיסמה על ידי עדכון השפה במכונה לאימות לפני שליחת האימייל. לדוגמה:
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
אפשר לשלוח אימיילים בנושא איפוס סיסמה גם מהמסוף של Firebase.
מחיקת משתמש
אפשר למחוק חשבון משתמש באמצעות השיטה delete
. לדוגמה:
import { getAuth, deleteUser } from "firebase/auth"; const auth = getAuth(); const user = auth.currentUser; deleteUser(user).then(() => { // User deleted. }).catch((error) => { // An error ocurred // ... });
const user = firebase.auth().currentUser; user.delete().then(() => { // User deleted. }).catch((error) => { // An error ocurred // ... });
אפשר גם למחוק משתמשים מהקטע Authentication (אימות) במסוף Firebase, בדף Users (משתמשים).
אימות מחדש של משתמש
פעולות רגישות מסוימות לאבטחה, כמו
מחיקת חשבון,
להגדיר כתובת אימייל ראשית, וכן
החלפת סיסמה – המשתמש צריך להזין
נכנסו לאחרונה. אם ביצעתם אחת מהפעולות האלה, והמשתמש נכנס לחשבון
לפני יותר מדי זמן, הפעולה נכשלה עם שגיאה.
במקרה כזה, כדי לאמת מחדש את המשתמש צריך לקבל פרטי כניסה חדשים
מהמשתמש ומעבירים את פרטי הכניסה אל reauthenticateWithCredential
.
לדוגמה:
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 // ... });
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