חיבור האפליקציה ל-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:33.4.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, האפליקציה שלכם תשתמש תמיד בגרסאות תואמות של ספריות Android של Firebase.
(חלופה) מוסיפים יחסי תלות של ספריית 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:23.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 יש כמה שלבים פשוטים:
- הוספה של שורת קוד להגדרות הבדיקה של האפליקציה כדי להתחבר לאמולטור.
- מהרמה הבסיסית (root) של ספריית הפרויקט המקומית, מריצים את
firebase emulators:start
. - באמצעות ממשק המשתמש של Local Emulator Suite ליצירת אב טיפוס אינטראקטיבי, או באמצעות ה-API ל-REST של המהדר Authentication לבדיקה לא אינטראקטיבית.
מדריך מפורט זמין במאמר חיבור האפליקציה לאמולטור Authentication. לקבלת מידע נוסף, אפשר לעיין במבוא בנושא Local Emulator Suite.
עכשיו נמשיך בתהליך אימות המשתמשים.
בדיקת המצב הנוכחי של האימות
צריך להצהיר על מופע של
FirebaseAuth
.Kotlin+KTX
private lateinit var auth: FirebaseAuth
Java
private FirebaseAuth mAuth;
ב-method
onCreate()
, מאתחלים את המופעFirebaseAuth
.Kotlin+KTX
// Initialize Firebase Auth auth = Firebase.auth
Java
// Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
כשמאתחלים את הפעילות, יש לבדוק אם המשתמש מחובר כרגע אינץ'
Kotlin+KTX
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+KTX
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+KTX
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+KTX
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(); }
השלבים הבאים
כדאי לעיין במדריכים הבאים להוספת שירותי זהות ואימות אחרים: