אפשר להשתמש ב-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:33.7.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:23.1.0") }
- אם עדיין לא קישרתם את האפליקציה לפרויקט Firebase, תוכלו לעשות זאת דרך מסוף Firebase.
- מפעילים את האימות האנונימי:
- במסוף Firebase, פותחים את הקטע Auth.
- בדף Sign-in Methods מפעילים את שיטת הכניסה 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();
- כשאתם מאתחלים את הפעילות, בודקים אם המשתמש מחובר כרגע:
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.