אתם יכולים להשתמש ב-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: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, אתם יכולים לעשות זאת דרך מסוף Firebase.
- הפעלת אימות אנונימי:
- במסוף Firebase, פותחים את הקטע אימות.
- בדף שיטות כניסה, מפעילים את שיטת הכניסה אנונימית.
- אופציונלי: אם שדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, אתם יכולים להפעיל ניקוי אוטומטי. כשמפעילים את ההגדרה הזו, חשבונות אנונימיים בני יותר מ-30 יום נמחקים באופן אוטומטי. בפרויקטים שבהם מופעלת ניקוי אוטומטי, אימות אנונימי לא ייספר יותר במסגרת מגבלות השימוש או מכסות החיוב. מידע נוסף זמין במאמר בנושא ניקוי אוטומטי.
אימות אנונימי באמצעות Firebase
כשמשתמש לא מחובר משתמש בתכונה באפליקציה שדורשת אימות באמצעות Firebase, צריך להשלים את השלבים הבאים כדי לחבר את המשתמש באופן אנונימי:
- בשיטה
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 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
כדי להיכנס כמשתמש אנונימי:Kotlin
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, טוקן גישה ל-Facebook או כתובת אימייל וסיסמה. מקבלים
AuthCredential
עבור ספק האימות החדש:כניסה באמצעות חשבון Google
Kotlin
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
התחברות באמצעות חשבון Facebook
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
לשיטהlinkWithCredential
של המשתמש שנכנס: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.