Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

הוסף כניסה בקלות לאפליקציית Android שלך באמצעות FirebaseUI

FirebaseUI היא ספרייה הבנויה על-גבי ה- SDK של אימות Firebase המספקת זרמי ממשק משתמש נפתחים לשימוש באפליקציה שלך. FirebaseUI מספק את היתרונות הבאים:

  • ספקים מרובים - זרמי כניסה לדוא"ל / סיסמה, קישור דוא"ל, אימות טלפון, כניסה של גוגל, כניסה לפייסבוק, כניסה לטוויטר והתחברות ל- GitHub.
  • ניהול חשבונות - זורם לטיפול במשימות ניהול חשבונות, כגון יצירת חשבון ואיפוס סיסמאות.
  • קישור חשבונות - זורם לקישור חשבונות משתמשים בבטחה בין ספקי זהות.
  • שדרוג משתמשים אנונימיים - זורם לשדרוג בטוח של משתמשים אנונימיים.
  • ערכות נושא מותאמות אישית - התאימו את המראה של FirebaseUI כך שיתאים לאפליקציה שלכם. כמו כן, מכיוון ש- FirebaseUI הוא קוד פתוח, תוכלו למזלג את הפרויקט ולהתאים אותו בדיוק לצרכים שלכם.
  • Smart Lock לסיסמאות - שילוב אוטומטי עם Smart Lock לסיסמאות לכניסה מהירה בין מכשירים.

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

  1. אם עדיין לא עשית זאת, הוסף את Firebase לפרויקט Android שלך .

  2. הוסף את התלות עבור FirebaseUI לקובץ build.gradle ברמת האפליקציה שלך. אם אתה רוצה לתמוך בכניסה באמצעות פייסבוק או טוויטר, כלול גם את ערכות ה- SDK של פייסבוק וטוויטר:

    dependencies {
        // ...
    
        implementation 'com.firebaseui:firebase-ui-auth:6.4.0'
    
        // Required only if Facebook login support is required
        // Find the latest Facebook SDK releases here: https://goo.gl/Ce5L94
        implementation 'com.facebook.android:facebook-android-sdk:4.x'
    
        // Required only if Twitter login support is required
        // Find the latest Twitter SDK releases here: https://goo.gl/E5wZvQ
        implementation 'com.twitter.sdk.android:twitter-core:3.x'
    }
    

    ל- SDK של Autebase Auth יש תלות מעבר ב- SDK של Firebase וב- SDK של שירותי Google Play.

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

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

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

    
    <resources>
      <!-- Facebook application ID and custom URL scheme (app ID prefixed by 'fb'). -->
      <string name="facebook_application_id" translatable="false">YOUR_APP_ID</string>
      <string name="facebook_login_protocol_scheme" translatable="false">fbYOUR_APP_ID</string>
      <!-- Twitter consumer key and secret -->
      <string name="twitter_consumer_key" translatable="false">YOUR_CONSUMER_KEY</string>
      <string name="twitter_consumer_secret" translatable="false">YOUR_CONSUMER_SECRET</string>
    </resources>
    

להתחבר

כדי להתחיל את זרימת הכניסה של FirebaseUI, צור כוונת כניסה בשיטות הכניסה המועדפות עליך:

ג'אווה

// Choose authentication providers
List<AuthUI.IdpConfig> providers = Arrays.asList(
        new AuthUI.IdpConfig.EmailBuilder().build(),
        new AuthUI.IdpConfig.PhoneBuilder().build(),
        new AuthUI.IdpConfig.GoogleBuilder().build(),
        new AuthUI.IdpConfig.FacebookBuilder().build(),
        new AuthUI.IdpConfig.TwitterBuilder().build());

// Create and launch sign-in intent
startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .build(),
        RC_SIGN_IN);

Kotlin + KTX

// Choose authentication providers
val providers = arrayListOf(
        AuthUI.IdpConfig.EmailBuilder().build(),
        AuthUI.IdpConfig.PhoneBuilder().build(),
        AuthUI.IdpConfig.GoogleBuilder().build(),
        AuthUI.IdpConfig.FacebookBuilder().build(),
        AuthUI.IdpConfig.TwitterBuilder().build())

// Create and launch sign-in intent
startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .build(),
        RC_SIGN_IN)

לאחר השלמת זרימת הכניסה, תקבל את התוצאה ב- onActivityResult :

ג'אווה

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == RC_SIGN_IN) {
        IdpResponse response = IdpResponse.fromResultIntent(data);

        if (resultCode == RESULT_OK) {
            // Successfully signed in
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            // ...
        } else {
            // Sign in failed. If response is null the user canceled the
            // sign-in flow using the back button. Otherwise check
            // response.getError().getErrorCode() and handle the error.
            // ...
        }
    }
}

Kotlin + KTX

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == RC_SIGN_IN) {
        val response = IdpResponse.fromResultIntent(data)

        if (resultCode == Activity.RESULT_OK) {
            // Successfully signed in
            val user = FirebaseAuth.getInstance().currentUser
            // ...
        } else {
            // Sign in failed. If response is null the user canceled the
            // sign-in flow using the back button. Otherwise check
            // response.getError().getErrorCode() and handle the error.
            // ...
        }
    }
}

הגדר שיטות כניסה

  1. במסוף Firebase , פתח את קטע האימות . בכרטיסיה שיטת כניסה , הפעל את ספק הדוא"ל / סיסמה . שים לב כי יש לאפשר כניסה באמצעות דוא"ל / סיסמה כדי להשתמש בכניסה לקישור דוא"ל.

  2. באותו סעיף, הפעל שיטת כניסה לקישור דוא"ל (כניסה ללא סיסמה) ולחץ על שמור .

  3. יהיה עליך לאפשר גם לקישורים דינמיים של Firebase להשתמש בכניסה לקישור דוא"ל. במסוף Firebase , לחץ על קישורים דינמיים תחת Engage בסרגל הניווט. לחץ על תחילת העבודה והוסף דומיין. הדומיין שתבחר כאן יבוא לידי ביטוי בקישורי הדוא"ל שנשלחו למשתמשים שלך.

  4. באפשרותך להפעיל כניסה לקישור דוא"ל ב- FirebaseUI על ידי קריאה enableEmailLinkSignIn EmailBuilder במופע של EmailBuilder . יהיה עליך גם לספק אובייקט חוקי של ActionCodeSettings עם setHandleCodeInApp שהוגדר כ- true. בנוסף, עליך להוסיף לרשימת היתרים את כתובת האתר שאתה מעביר ל- setUrl , שניתן לבצע במסוף Firebase , תחת אימות -> שיטות כניסה -> דומיינים מורשים.

    ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
            .setAndroidPackageName(/* yourPackageName= */ ..., /* installIfNotAvailable= */ true,
            /* minimumVersion= */ null)
            .setHandleCodeInApp(true) // This must be set to true
            .setUrl("https://google.com") // This URL needs to be whitelisted
            .build();
    
    startActivityForResult(
            AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setAvailableProviders(Arrays.asList(
                            new AuthUI.IdpConfig.EmailBuilder().enableEmailLinkSignIn()
                            .setActionCodeSettings(actionCodeSettings).build())
                    .build(),
            RC_SIGN_IN);
    
    
  5. אם ברצונך לתפוס את הקישור בפעילות ספציפית, אנא עקוב אחר הצעדים המתוארים כאן . אחרת, הקישור ינותב לפעילות ההפעלה שלך.

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

    if (AuthUI.canHandleIntent(getIntent())) {
        if (getIntent().getExtras() == null) {
                return;
            }
            String link = getIntent().getExtras().getString(ExtraConstants.EMAIL_LINK_SIGN_IN);
            if (link != null) {
                startActivityForResult(
                        AuthUI.getInstance()
                                .createSignInIntentBuilder()
                                .setEmailLink(link)
                                .setAvailableProviders(getAvailableProviders())
                                .build(),
                        RC_SIGN_IN);
            }
    }
    
  7. תמיכה בכניסה לקישור דוא"ל בין מכשירים אופציונליים , מה שאומר שהקישור שנשלח באמצעות אפליקציית Android שלך יכול לשמש כדי להתחבר לאינטרנט או לאפליקציות iOS שלך. כברירת מחדל, תמיכה בין מכשירים מופעלת. אתה יכול להשבית אותו על ידי התקשרות setForceSameDevice EmailBuilder במופע EmailBuilder .

    ראה FirebaseUI-Web ו- FirebaseUI-iOS למידע נוסף.

התנתק

FirebaseUI מספק שיטות נוחות להתנתק מאימות Firebase כמו גם לכל ספקי הזהות החברתית:

ג'אווה

AuthUI.getInstance()
        .signOut(this)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            public void onComplete(@NonNull Task<Void> task) {
                // ...
            }
        });

Kotlin + KTX

AuthUI.getInstance()
        .signOut(this)
        .addOnCompleteListener {
            // ...
        }

באפשרותך גם למחוק לחלוטין את חשבון המשתמש:

ג'אווה

AuthUI.getInstance()
        .delete(this)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                // ...
            }
        });

Kotlin + KTX

AuthUI.getInstance()
        .delete(this)
        .addOnCompleteListener {
            // ...
        }

התאמה אישית

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

ג'אווה

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setLogo(R.drawable.my_great_logo)      // Set logo drawable
                .setTheme(R.style.MySuperAppTheme)      // Set theme
                .build(),
        RC_SIGN_IN);

Kotlin + KTX

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setLogo(R.drawable.my_great_logo) // Set logo drawable
                .setTheme(R.style.MySuperAppTheme) // Set theme
                .build(),
        RC_SIGN_IN)

תוכל גם להגדיר מדיניות פרטיות ותנאי שירות מותאמים אישית:

ג'אווה

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setTosAndPrivacyPolicyUrls(
                        "https://example.com/terms.html",
                        "https://example.com/privacy.html")
                .build(),
        RC_SIGN_IN);

Kotlin + KTX

startActivityForResult(
        AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .setTosAndPrivacyPolicyUrls(
                        "https://example.com/terms.html",
                        "https://example.com/privacy.html")
                .build(),
        RC_SIGN_IN)

הצעדים הבאים

  • למידע נוסף על שימוש והתאמה אישית של FirebaseUI, עיין בקובץ README ב- GitHub.
  • אם אתה מוצא בעיה ב- FirebaseUI וברצונך לדווח עליה, השתמש במעקב אחר בעיות GitHub .