בצע אימות עם Firebase אנונימי ב-Android

אתה יכול להשתמש באימות Firebase כדי ליצור ולהשתמש בחשבונות אנונימיים זמניים כדי לבצע אימות עם Firebase. ניתן להשתמש בחשבונות אנונימיים זמניים אלה כדי לאפשר למשתמשים שעדיין לא נרשמו לאפליקציה שלך לעבוד עם נתונים המוגנים על ידי כללי אבטחה. אם משתמש אנונימי מחליט להירשם לאפליקציה שלך, תוכל לקשר את אישורי הכניסה שלו לחשבון האנונימי כדי שיוכל להמשיך לעבוד עם הנתונים המוגנים שלו במפגשים עתידיים.

לפני שאתה מתחיל

  1. אם עדיין לא עשית זאת, הוסף את Firebase לפרויקט Android שלך .
  2. בקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל <project>/<app-module>/build.gradle.kts או <project>/<app-module>/build.gradle ), הוסף את התלות עבור אימות Firebase ספרייה עבור אנדרואיד. אנו ממליצים להשתמש ב- Firebase Android BoM כדי לשלוט בגירסאות של הספרייה.
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.8.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:22.3.1")
    }
    
    מחפש מודול ספרייה ספציפי לקוטלין? החל מאוקטובר 2023 (Firebase BoM 32.5.0) , מפתחי Kotlin ו-Java יכולים להיות תלויים במודול הספרייה הראשי (לפרטים, עיין בשאלות הנפוצות לגבי יוזמה זו ).
  3. אם עדיין לא חיברת את האפליקציה שלך לפרויקט Firebase שלך, עשה זאת ממסוף Firebase .
  4. אפשר אימות אנונימי:
    1. במסוף Firebase , פתח את הקטע Auth .
    2. בדף שיטות כניסה , הפעל את שיטת הכניסה אנונימית .
    3. אופציונלי : אם שדרגת את הפרויקט שלך לאימות Firebase עם Identity Platform , תוכל להפעיל ניקוי אוטומטי. כאשר תפעיל הגדרה זו, חשבונות אנונימיים מעל 30 יום יימחקו אוטומטית. בפרויקטים עם ניקוי אוטומטי מופעל, אימות אנונימי לא ייחשב עוד עבור מגבלות השימוש או מכסות החיוב. ראה ניקוי אוטומטי .

בצע אימות אנונימי עם Firebase

כאשר משתמש מנותק משתמש בתכונת אפליקציה הדורשת אימות עם Firebase, היכנס למשתמש באופן אנונימי על ידי השלמת השלבים הבאים:

  1. בשיטה onCreate של הפעילות שלך, קבל את המופע המשותף של אובייקט FirebaseAuth :

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. בעת אתחול הפעילות שלך, בדוק אם המשתמש מחובר כעת:

    Kotlin+KTX

    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);
    }
  3. לבסוף, התקשר signInAnonymously כדי להיכנס כמשתמש אנונימי:

    Kotlin+KTX

    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 כדי לקבל את נתוני החשבון של המשתמש.

המרת חשבון אנונימי לחשבון קבוע

כאשר משתמש אנונימי נרשם לאפליקציה שלך, אולי תרצה לאפשר לו להמשיך בעבודתו עם החשבון החדש שלו - לדוגמה, ייתכן שתרצה להפוך את הפריטים שהמשתמש הוסיף לעגלת הקניות שלו לפני שנרשם לזמינים בחדש שלו. עגלת הקניות של החשבון. לשם כך, בצע את השלבים הבאים:

  1. כאשר המשתמש נרשם, השלם את זרימת הכניסה עבור ספק האימות של המשתמש עד, אך לא כולל, קריאה לאחת משיטות FirebaseAuth.signInWith . לדוגמה, קבל את אסימון ה-Google ID של המשתמש, אסימון הגישה לפייסבוק או כתובת דוא"ל וסיסמה.
  2. קבל AuthCredential עבור ספק האימות החדש:

    כניסה לגוגל

    Kotlin+KTX

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
    כניסה לפייסבוק

    Kotlin+KTX

    val credential = FacebookAuthProvider.getCredential(token.token)

    Java

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    כניסה לסיסמת דוא"ל

    Kotlin+KTX

    val credential = EmailAuthProvider.getCredential(email, password)

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);
  3. העבר את האובייקט AuthCredential לשיטת linkWithCredential של משתמש הכניסה:

    Kotlin+KTX

    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 עם Identity Platform , תוכל להפעיל ניקוי אוטומטי במסוף Firebase. כשאתה מפעיל את התכונה הזו אתה מאפשר ל-Firebase למחוק אוטומטית חשבונות אנונימיים מעל 30 יום. בפרויקטים עם ניקוי אוטומטי מופעל, אימות אנונימי לא ייחשב במסגרת מגבלות השימוש או מכסות החיוב.

  • כל חשבונות אנונימיים שנוצרו לאחר הפעלת ניקוי אוטומטי עשויים להימחק אוטומטית בכל עת לאחר 30 יום לאחר היצירה.
  • חשבונות אנונימיים קיימים יהיו זכאים למחיקה אוטומטית 30 יום לאחר הפעלת הניקוי האוטומטי.
  • אם תכבה את הניקוי האוטומטי, כל חשבונות אנונימיים שתוכננו להימחק יישארו מתוכננים להימחק.
  • אם "משדרגים" חשבון אנונימי על ידי קישורו לשיטת כניסה כלשהי, החשבון לא יימחק אוטומטית.

אם אתה רוצה לראות כמה משתמשים יושפעו לפני שתפעיל תכונה זו, ושדרגת את הפרויקט שלך לאימות Firebase עם Identity Platform , תוכל לסנן לפי is_anon ב- Cloud Logging .

הצעדים הבאים

כעת, כשמשתמשים יכולים לבצע אימות באמצעות Firebase, אתה יכול לשלוט בגישה שלהם לנתונים במסד הנתונים שלך ב-Firebase באמצעות כללי Firebase .