Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
דף זה תורגם על ידי Cloud Translation API.
Switch to English

אמת עם Firebase באופן אנונימי באנדרואיד

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

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

  1. אם עדיין לא עשית זאת, הוסף את Firebase לפרויקט Android שלך .
  2. באמצעות אנדרואיד ה- BoM של Firebase , הצהירו על התלות בספריית אנדרואיד האימות של Firebase במודול שלכם (ברמת האפליקציה) בקובץ Gradle (בדרך כלל app/build.gradle ).

    ג'אווה

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.1.0')
    
        // Declare 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 {
        // Declare 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:20.0.4'
    }
    

    Kotlin + KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.1.0')
    
        // Declare 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-ktx'
    }
    

    על ידי שימוש ב- Firebase Android BoM , היישום שלך ישתמש תמיד בגרסאות תואמות של ספריות Android ל- Firebase.

    (חלופי) הצהיר על תלות בספריית Firebase מבלי להשתמש ב- BoM

    אם תבחר לא להשתמש ב- Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

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

    dependencies {
        // Declare 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-ktx:20.0.4'
    }
    
  3. אם עדיין לא חיברת את האפליקציה שלך לפרוייקט Firebase שלך, עשה זאת ממסוף Firebase .
  4. הפעל אימות אנונימי:
    1. במסוף Firebase , פתח את החלק Auth .
    2. בדף שיטות כניסה , הפעל את שיטת הכניסה האנונימית .

אמת עם Firebase באופן אנונימי

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

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

    ג'אווה

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin + KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. בעת אתחול הפעילות שלך, בדוק אם המשתמש מחובר כעת:

    ג'אווה

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }

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

    ג'אווה

    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);
                    }
                }
            });

    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)
                }
            }
    אם הכניסה מצליחה אתה יכול להשתמש בשיטת getCurrentUser כדי לקבל את נתוני החשבון של המשתמש.

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

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

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

    כניסה ל- Google

    ג'אווה

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);

    Kotlin + KTX

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

    ג'אווה

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

    Kotlin + KTX

    val credential = FacebookAuthProvider.getCredential(token.token)
    כניסה באמצעות סיסמה בדוא"ל

    ג'אווה

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);

    Kotlin + KTX

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

    ג'אווה

    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);
                    }
                }
            });

    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)
                }
            }

אם הקריאה ל- linkWithCredential תצליח, החשבון החדש של המשתמש יכול לגשת לנתוני Firebase של החשבון האנונימי.

הצעדים הבאים

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