אתם יכולים להשתמש ב-Firebase Authentication כדי לאפשר למשתמשים שלכם לאמת את הזהות שלהם ב-Firebase באמצעות כתובות האימייל והסיסמאות שלהם, וכדי לנהל את החשבונות של האפליקציה שלכם שמבוססים על סיסמאות.
הנחיית AI לקבלת עזרה מבוססת-AI
כדי לקבל עזרה מ-AI, מעתיקים את ההנחיה שלמטה לסוכן תכנות מבוסס-AI (כמו Gemini ב-Android Studio, Antigravity, Claude Code, Codex ו-Cursor). אתם יכולים להתאים אישית את הפרומפט ולשפר אותו בעזרת הסוכן. מידע מפורט על ההתקנה זמין במאמר בנושא סקילים של נציגים ב-Firebase.
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up and use Firebase Authentication with email and password authentication in my app.
לפני שמתחילים
אם עדיין לא עשיתם זאת, עליכם להוסיף את Firebase לפרויקט Android שלכם.
- אם עדיין לא קישרתם את האפליקציה לפרויקט Firebase, אתם צריכים לעשות זאת דרך מסוף Firebase.
-
מפעילים את האפשרות 'כתובת אימייל/סיסמה' כספק כניסה לפרויקט Firebase:
- במסוף Firebase, עוברים אל Security (אבטחה) > Authentication (אימות).
- בכרטיסייה שיטת התחברות, מפעילים את ספק ההזדהות Email/password.
- לוחצים על שמירה.
בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל
<project>/<app-module>/build.gradle.ktsאו<project>/<app-module>/build.gradle), מוסיפים את התלות בספריית Firebase Authentication ל-Android. מומלץ להשתמש ב-Firebase Android BoM כדי לשלוט בניהול הגרסאות של הספריות.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth") }
באמצעות Firebase Android BoM, האפליקציה תמיד תשתמש בגרסאות תואמות של ספריות Firebase ל-Android.
(חלופה) הוספת תלות של הפרויקט בספריות Firebase בלי להשתמש ב-BoM
אם בוחרים לא להשתמש ב-Firebase BoM, צריך לציין את הגרסה של כל ספריית Firebase בשורת התלות שלה.
הערה: אם אתם משתמשים בכמה ספריות Firebase באפליקציה, מומלץ מאוד להשתמש ב-BoM כדי לנהל את גרסאות הספריות, וכך לוודא שכל הגרסאות תואמות.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:25.0.0") }
יצירת חשבון שמבוסס על סיסמה
כדי ליצור חשבון משתמש חדש עם סיסמה, צריך לבצע את השלבים הבאים בפעילות הכניסה לאפליקציה:
- ב-method
onCreateשל פעילות ההרשמה, מקבלים את המופע המשותף של אובייקטFirebaseAuth:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- כשמפעילים את הפעילות, בודקים אם המשתמש מחובר כרגע:
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if (currentUser != null) { reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- כשמשתמש חדש נרשם באמצעות טופס ההרשמה של האפליקציה, צריך להשלים את כל שלבי האימות של החשבון החדש שהאפליקציה דורשת, כמו אימות הסיסמה של החשבון החדש כדי לוודא שהיא הוזנה בצורה נכונה ועומדת בדרישות המורכבות שלכם.
- יוצרים חשבון חדש על ידי העברת כתובת האימייל והסיסמה של המשתמש החדש
אל
createUserWithEmailAndPassword:אם החשבון החדש נוצר, המשתמש גם מחובר אליו. ב-callback, אפשר להשתמש בשיטהKotlin
auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUserכדי לקבל את נתוני החשבון של המשתמש.
כניסה של משתמש באמצעות כתובת אימייל וסיסמה
השלבים לכניסה של משתמש באמצעות סיסמה דומים לשלבים של יצירת חשבון חדש. בפעילות הכניסה לאפליקציה, מבצעים את הפעולות הבאות:
- ב-method
onCreateשל פעילות הכניסה, מקבלים את המופע המשותף של האובייקטFirebaseAuth:Kotlin
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- כשמפעילים את הפעילות, בודקים אם המשתמש מחובר כרגע:
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if (currentUser != null) { reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- כשמשתמש נכנס לאפליקציה שלכם, מעבירים את כתובת האימייל והסיסמה של המשתמש אל
signInWithEmailAndPassword:אם הכניסה לחשבון הצליחה, אפשר להשתמש ב-Kotlin
auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
FirebaseUserשהוחזר כדי להמשיך.
מומלץ: הגדרת מדיניות לסיסמאות
כדי לשפר את אבטחת החשבון, אפשר לאכוף דרישות למורכבות הסיסמה.
כדי להגדיר מדיניות סיסמאות לפרויקט, פותחים את הקטע מדיניות סיסמאות בכרטיסייה הגדרות > אימות > אבטחה במסוף Firebase:
מדיניות הסיסמאות של Firebase Authentication תומכת בדרישות הסיסמה הבאות:
נדרשת אות קטנה
חובה להשתמש באותיות רישיות
נדרש תו מספרי
נדרש תו לא אלפאנומרי
התווים הבאים עומדים בדרישה לתו שאינו אלפאנומרי:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~אורך סיסמה מינימלי (הטווח הוא 6 עד 30 תווים, ברירת המחדל היא 6)
אורך הסיסמה המקסימלי (אורך מקסימלי של 4,096 תווים)
אפשר להפעיל את אכיפת מדיניות הסיסמאות בשני מצבים:
חובה: ניסיונות ההרשמה ייכשלו עד שהמשתמש יעבור לסיסמה שעומדת בדרישות המדיניות.
התראה: המשתמשים יכולים להירשם עם סיסמה שלא עומדת בדרישות. כשמשתמשים במצב הזה, צריך לבדוק בצד הלקוח אם הסיסמה של המשתמש עומדת בדרישות המדיניות, ואם לא, להציג למשתמש הודעה כלשהי כדי לעדכן את הסיסמה.
משתמשים חדשים תמיד נדרשים לבחור סיסמה שעומדת בדרישות המדיניות שלכם.
אם יש לכם משתמשים פעילים, מומלץ לא להפעיל שדרוג מאולץ בכניסה לחשבון, אלא אם אתם מתכוונים לחסום את הגישה למשתמשים שהסיסמאות שלהם לא עומדות בדרישות המדיניות. במקום זאת, אפשר להשתמש במצב הודעה, שמאפשר למשתמשים להיכנס עם הסיסמאות הנוכחיות שלהם, ומודיע להם מה חסר בסיסמה שלהם כדי לעמוד בדרישות.
מומלץ: הפעלת הגנה מפני ספירת כתובות אימייל
חלק מהשיטות של Firebase Authentication שמקבלות כתובות אימייל כפרמטרים מחזירות שגיאות ספציפיות אם כתובת האימייל לא רשומה כשהיא צריכה להיות רשומה (לדוגמה, כשנכנסים באמצעות כתובת אימייל וסיסמה), או רשומה כשהיא צריכה להיות לא בשימוש (לדוגמה, כשמשנים כתובת אימייל של משתמש). האפשרות הזו יכולה לעזור להציע למשתמשים פתרונות ספציפיים, אבל גורמים זדוניים יכולים לנצל אותה לרעה כדי לגלות את כתובות האימייל שהמשתמשים שלכם רשמו.
כדי לצמצם את הסיכון הזה, מומלץ לוודא שההגנה מפני ספירת כתובות אימייל מופעלת בפרויקט. כדי לבדוק את ההגדרה הזו במסוף Firebase, עוברים אל אבטחה > אימות > הכרטיסייה הגדרות, ואז לוחצים על פעולות משתמש.
שימו לב שהפעלת התכונה הזו משנה את התנהגות הדיווח על שגיאות ב-Firebase Authentication, לכן חשוב לוודא שהאפליקציה לא מסתמכת על השגיאות הספציפיות יותר.
השלבים הבאים
אחרי שמשתמש נכנס לחשבון בפעם הראשונה, נוצר חשבון משתמש חדש שמקושר לפרטי הכניסה – כלומר, שם המשתמש והסיסמה, מספר הטלפון או פרטי ספק האימות – שבאמצעותם המשתמש נכנס לחשבון. החשבון החדש הזה מאוחסן כחלק מפרויקט Firebase, ואפשר להשתמש בו כדי לזהות משתמש בכל אפליקציה בפרויקט, בלי קשר לשיטת הכניסה של המשתמש.
-
באפליקציות, אפשר לקבל את פרטי הפרופיל הבסיסיים של המשתמש מאובייקט
FirebaseUser. מידע נוסף זמין במאמר בנושא ניהול משתמשים. בFirebase Realtime Database ובCloud Storage כללי האבטחה, אפשר לקבל את מזהה המשתמש הייחודי של המשתמש המחובר מהמשתנה
auth, ולהשתמש בו כדי לקבוע לאילו נתונים המשתמש יכול לגשת.
אתם יכולים לאפשר למשתמשים להיכנס לאפליקציה שלכם באמצעות כמה ספקי אימות על ידי קישור פרטי הכניסה של ספק האימות לחשבון משתמש קיים.
כדי להוציא משתמש מהחשבון, מתקשרים אל
signOut:
Kotlin
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();