קישור האפליקציה ל-Firebase
אם עדיין לא עשיתם זאת, עליכם להוסיף את Firebase לפרויקט Android שלכם.
הוספת Firebase Authentication לאפליקציה
בקובץ 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:34.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:24.0.0") }
כדי להשתמש בספק אימות, צריך להפעיל אותו במסוף Firebase. עוברים לדף Sign-in Method (שיטת כניסה) בקטע Firebase Authentication כדי להפעיל כניסה באמצעות כתובת אימייל או סיסמה, וכל ספק זהויות אחר שרוצים להשתמש בו באפליקציה.
(אופציונלי) יצירת אב טיפוס ובדיקה באמצעות Firebase Local Emulator Suite
לפני שנדבר על האופן שבו האפליקציה מאמתת משתמשים, נציג קבוצה של כלים שבהם אפשר להשתמש כדי ליצור אב טיפוס ולבדוק את הפונקציונליות של Authentication: Firebase Local Emulator Suite. אם אתם מתלבטים בין טכניקות וספקים של אימות, מנסים מודלים שונים של נתונים עם נתונים ציבוריים ופרטיים באמצעות Authentication ו-Firebase Security Rules, או יוצרים אב טיפוס של עיצובים לממשק משתמש של כניסה, כדאי לעבוד באופן מקומי בלי לפרוס שירותים פעילים.
Authentication אמולטור הוא חלק מ-Local Emulator Suite, שמאפשר לאפליקציה שלכם ליצור אינטראקציה עם תוכן ועם הגדרות של מסד נתונים שעבר אמולציה, וגם עם משאבי הפרויקט שעברו אמולציה (פונקציות, מסדי נתונים אחרים וכללי אבטחה).
השימוש באמולטור Authentication מתבצע בכמה שלבים פשוטים:
- הוספת שורת קוד להגדרת הבדיקה של האפליקציה כדי להתחבר לאמולטור.
- מהספרייה הראשית של פרויקט מקומי, מריצים את הפקודה
firebase emulators:start
. - שימוש בממשק המשתמש של Local Emulator Suite ליצירת אב טיפוס אינטראקטיבי, או ב-API של Authentication בארכיטקטורת REST לבדיקה לא אינטראקטיבית.
מדריך מפורט זמין במאמר חיבור האפליקציה לאמולטור של Authentication. מידע נוסף זמין Local Emulator Suiteבמאמר המבוא.
עכשיו נמשיך להסביר איך לאמת משתמשים.
בדיקת סטטוס האימות הנוכחי
מצהירים על מופע של
FirebaseAuth
.Kotlin
private lateinit var auth: FirebaseAuth
Java
private FirebaseAuth mAuth;
ב-method
onCreate()
, מאתחלים את המופעFirebaseAuth
.Kotlin
// Initialize Firebase Auth auth = Firebase.auth
Java
// 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(); } }
רישום משתמשים חדשים
יוצרים שיטה חדשה, createAccount
, שמקבלת כתובת אימייל וסיסמה, מאמתת אותן ואז יוצרת משתמש חדש באמצעות השיטה createUserWithEmailAndPassword
.
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); } } });
מוסיפים טופס לרישום משתמשים חדשים עם כתובת האימייל והסיסמה שלהם, ומפעילים את השיטה החדשה הזו כשהטופס נשלח. דוגמה מופיעה במדריך למתחילים.
כניסה של משתמשים קיימים
יוצרים שיטה חדשה signIn
שמקבלת כתובת אימייל וסיסמה, מאמתת אותן ואז מחתמת משתמש באמצעות השיטה 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); } } });
מוסיפים טופס לכניסה של משתמשים באמצעות האימייל והסיסמה שלהם, ומפעילים את השיטה החדשה הזו כשהטופס נשלח. דוגמה מופיעה במדריך למתחילים.
גישה לפרטי משתמשים
אם משתמש נכנס לחשבון בהצלחה, אפשר לקבל את נתוני החשבון שלו בכל שלב באמצעות השיטה getCurrentUser
.
Kotlin
val user = Firebase.auth.currentUser user?.let { // Name, email address, and profile photo Url val name = it.displayName val email = it.email val photoUrl = it.photoUrl // Check if user's email is verified val emailVerified = it.isEmailVerified // 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 // FirebaseUser.getIdToken() instead. val uid = it.uid }
Java
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { // Name, email address, and profile photo Url String name = user.getDisplayName(); String email = user.getEmail(); Uri photoUrl = user.getPhotoUrl(); // Check if user's email is verified boolean emailVerified = user.isEmailVerified(); // 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 // FirebaseUser.getIdToken() instead. String uid = user.getUid(); }
השלבים הבאים
כדאי לעיין במדריכים בנושא הוספת שירותים אחרים של אימות וזיהוי: