אתם יכולים להשתמש ב-Firebase Authentication כדי ליצור חשבונות אנונימיים זמניים ולהשתמש בהם לאימות ב-Firebase. החשבונות האנונימיים הזמניים האלה מאפשרים למשתמשים שעדיין לא נרשמו לאפליקציה לעבוד עם נתונים שמוגנים על ידי כללי אבטחה. אם משתמש לא רשום מחליט להירשם לאפליקציה, אתם יכולים לקשר את פרטי הכניסה שלו לחשבון האנונימי כדי שהוא יוכל להמשיך לעבוד עם הנתונים המוגנים שלו בחיבורים עתידיים.
לפני שמתחילים
- אם עדיין לא הוספתם את Firebase לפרויקט Android, אתם צריכים להוסיף אותו.
-
בקובץ 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.1.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") }
- אם עדיין לא קישרתם את האפליקציה לפרויקט ב-Firebase, אתם צריכים לעשות את זה דרך מסוף Firebase.
-
מפעילים אימות אנונימי:
- במסוף Firebase, נכנסים אל אבטחה > אימות.
- בכרטיסייה שיטת כניסה לחשבון, מפעילים את ספק הכניסה Anonymous.
- אופציונלי: אם שדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, אתם יכולים להפעיל ניקוי אוטומטי. כשמפעילים את ההגדרה הזו, חשבונות אנונימיים שנוצרו לפני יותר מ-30 ימים נמחקים באופן אוטומטי. בפרויקטים שבהם מופעל ניקוי אוטומטי, אימות אנונימי לא ייכלל יותר במגבלות השימוש או במכסות החיוב. מידע נוסף זמין בקטע ניקוי אוטומטי.
אימות אנונימי באמצעות Firebase
כשמשתמש שלא מחובר לחשבון משתמש בתכונה באפליקציה שדורשת אימות באמצעות Firebase, צריך להכניס את המשתמש באופן אנונימי על ידי ביצוע השלבים הבאים:
- ב-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();
- כשמאתחלים את ה-Activity, בודקים אם המשתמש מחובר כרגע:
Kotlin
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
- לבסוף, קוראים ל-
signInAnonymouslyכדי להיכנס כמשתמש אנונימי:אם הכניסה מצליחה, אפשר להשתמש ב-methodKotlin
auth.signInAnonymously() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInAnonymously:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.signInAnonymously() .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, "signInAnonymously:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInAnonymously:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUserכדי לקבל את נתוני החשבון של המשתמש.
איך ממירים חשבון אנונימי לחשבון קבוע
כשמשתמש לא רשום נרשם לאפליקציה, יכול להיות שתרצו לאפשר לו להמשיך את העבודה שלו עם החשבון החדש. לדוגמה, יכול להיות שתרצו שהפריטים שהמשתמש הוסיף לעגלת הקניות לפני שנרשם יהיו זמינים בעגלת הקניות של החשבון החדש. כדי לעשות את זה:
- כשהמשתמש נרשם, משלימים את תהליך הכניסה של ספק האימות של המשתמש עד לשלב שבו קוראים לאחת מהשיטות של
FirebaseAuth.signInWith, אבל לא כולל את השלב הזה. לדוגמה, קבלת טוקן של מזהה Google של המשתמש, טוקן גישה לפייסבוק או כתובת אימייל וסיסמה. מקבלים
AuthCredentialלספק האימות החדש:כניסה באמצעות חשבון Google
Kotlin
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
התחברות לפייסבוק
Kotlin
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
כניסה באמצעות כתובת אימייל וסיסמה
Kotlin
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
מעבירים את האובייקט
AuthCredentialל-methodlinkWithCredentialשל המשתמש שמחובר לחשבון:Kotlin
auth.currentUser!!.linkWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { Log.d(TAG, "linkWithCredential:success") val user = task.result?.user updateUI(user) } else { Log.w(TAG, "linkWithCredential:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } }
Java
mAuth.getCurrentUser().linkWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { Log.d(TAG, "linkWithCredential:success"); FirebaseUser user = task.getResult().getUser(); updateUI(user); } else { Log.w(TAG, "linkWithCredential:failure", task.getException()); Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
אם הקריאה ל-linkWithCredential מצליחה, החשבון החדש של המשתמש יכול לגשת לנתוני Firebase של החשבון האנונימי.
ניקוי אוטומטי
אם שדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, אתם יכולים להפעיל ניקוי אוטומטי במסוף Firebase. כשמפעילים את התכונה הזו, Firebase יכולה למחוק באופן אוטומטי חשבונות אנונימיים שנוצרו לפני יותר מ-30 יום. בפרויקטים שבהם מופעל ניקוי אוטומטי, אימות אנונימי לא נכלל במגבלות השימוש או במכסות החיוב.
- כל חשבון אנונימי שנוצר אחרי הפעלת הניקוי האוטומטי עשוי להימחק אוטומטית בכל שלב אחרי 30 יום ממועד היצירה.
- חשבונות אנונימיים קיימים יהיו זכאים למחיקה אוטומטית 30 יום אחרי הפעלת הניקוי האוטומטי.
- אם משביתים את הניקוי האוטומטי, כל החשבונות האנונימיים שמתוזמנים למחיקה יישארו מתוזמנים למחיקה.
- אם "משדרגים" חשבון אנונימי על ידי קישור שלו לשיטת כניסה כלשהי, החשבון לא יימחק באופן אוטומטי.
אם אתם רוצים לראות כמה משתמשים יושפעו לפני שתפעילו את התכונה הזו, ושדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, אתם יכולים לסנן לפי is_anon ב-Cloud Logging.
השלבים הבאים
עכשיו, כשהמשתמשים יכולים לבצע אימות באמצעות Firebase, אתם יכולים לשלוט בגישה שלהם לנתונים במסד הנתונים של Firebase באמצעות כללי Firebase.