با استفاده از FirebaseUI به راحتی به برنامه Android خود وارد شوید

FirebaseUI یک کتابخانه ساخته شده در بالای فایربیس احراز هویت SDK فراهم می کند که قطره در UI جریان برای استفاده در برنامه شما است. FirebaseUI مزایای زیر را ارائه می دهد:

  • ارائه دهندگان متعدد - جریانهای ورود به سیستم برای ایمیل / رمز عبور، لینک ایمیل، احراز هویت تلفن، Google وارد شوید، فیس بوک ورود، توییتر ورود، و GitHub ورود.
  • مدیریت حساب - جریان مسئولیت رسیدگی به وظایف مدیریت حساب، مانند ایجاد حساب و بازنشانی رمز عبور.
  • ارتباط حساب - جریان با خیال راحت برای کاربران لینک حساب در سراسر ارائه دهندگان هویت.
  • ناشناس مدرنیزاسیون کاربر - جریان با خیال راحت کاربران ناشناس را ارتقا دهید.
  • سفارشی تم - سفارشی کردن ظاهر FirebaseUI برای مطابقت با برنامه شما. همچنین ، از آنجا که FirebaseUI منبع باز است ، می توانید پروژه را فورک کرده و آن را دقیقاً مطابق نیاز خود سفارشی کنید.
  • Smart Lock برای گذرواژه - یکپارچه سازی خودکار با Smart Lock برای گذرواژه برای سریع متقابل دستگاه ثبت نام در.

قبل از اینکه شروع کنی

  1. اگر شما در حال حاضر، اضافه فایربیس به پروژه آندروید خود را .

  2. اضافه کردن نیازمندی های FirebaseUI به سطح برنامه خود را build.gradle فایل. اگر می خواهید از ورود به سیستم با فیس بوک یا توییتر پشتیبانی کنید ، SDK های فیس بوک و توییتر را نیز وارد کنید:

    dependencies {
        // ...
    
        implementation 'com.firebaseui:firebase-ui-auth:7.2.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:8.x'
    }
    

    SDK FirebaseUI Auth وابستگی گذرا به Firebase SDK و سرویس Google Play SDK دارد.

  3. در فایربیس کنسول ، باز کردن بخش احراز هویت و فعال کردن ورود به سیستم در روش شما می خواهید برای حمایت از. برخی از روش های ورود به سیستم نیاز به اطلاعات اضافی دارند که معمولاً در کنسول توسعه دهنده سرویس موجود است.

  4. اگر Google ثبت نام در پشتیبانی و هنوز برنامه خود را SHA-1 اثر انگشت مشخص نشده است، انجام این کار از صفحه تنظیمات از کنسول فایربیس. مشاهده تأیید اعتبار مشتری خود را برای جزئیات بیشتر در مورد چگونگی گرفتن برنامه خود را 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>
    </resources>
    

ورود

ایجاد یک ActivityResultLauncher که ثبت مخاطبین برای قرارداد نتیجه FirebaseUI فعالیت درسایت:

جاوا

// See: https://developer.android.com/training/basics/intents/result
private final ActivityResultLauncher<Intent> signInLauncher = registerForActivityResult(
        new FirebaseAuthUIActivityResultContract(),
        new ActivityResultCallback<FirebaseAuthUIAuthenticationResult>() {
            @Override
            public void onActivityResult(FirebaseAuthUIAuthenticationResult result) {
                onSignInResult(result);
            }
        }
);

Kotlin+KTX

// See: https://developer.android.com/training/basics/intents/result
private val signInLauncher = registerForActivityResult(
        FirebaseAuthUIActivityResultContract()
) { res ->
    this.onSignInResult(res)
}

برای شروع جریان ورود به سیستم 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
Intent signInIntent = AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(providers)
        .build();
signInLauncher.launch(signInIntent);

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
val signInIntent = AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(providers)
        .build()
signInLauncher.launch(signInIntent)

هنگامی که جریان ورود به سیستم کامل است، شما را به نتیجه در دریافت onSignInResult :

جاوا

private void onSignInResult(FirebaseAuthUIAuthenticationResult result) {
    IdpResponse response = result.getIdpResponse();
    if (result.getResultCode() == 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

private fun onSignInResult(result: FirebaseAuthUIAuthenticationResult) {
    val response = result.idpResponse
    if (result.resultCode == 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. در فایربیس کنسول ، باز کردن بخش احراز هویت. بر روی ثبت نام در تب روش، فعال کردن ارائه دهنده ایمیل / رمز عبور. توجه داشته باشید که ورود به سیستم ایمیل/رمز عبور باید برای استفاده از ورود به سیستم پیوند ایمیل فعال باشد.

  2. در همان بخش، فعال کردن لینک ایمیل (passwordless ورود به سیستم) ثبت نام در روش و روی Save کلیک کنید.

  3. همچنین شما می خواهد برای فعال فایربیس پویا لینک استفاده کنید وارد شوید ایمیل لینک در است. در فایربیس کنسول ، با کلیک بر روی لینک های زیر پویا تعامل در نوار ناوبری. در شروع به کار کلیک کنید و اضافه کردن یک دامنه. دامنه ای که در اینجا انتخاب می کنید در پیوندهای ایمیل ارسال شده به کاربران منعکس می شود.

  4. شما می توانید ثبت لینک ایمیل در در FirebaseUI با تماس با فعال enableEmailLinkSignIn در EmailBuilder به عنوان مثال. شما همچنین نیاز به ارائه یک معتبر ActionCodeSettings شی با setHandleCodeInApp مجموعه ای به درست است. علاوه بر این، شما نیاز به لیست سفید URL شما به تصویب setUrl ، که می تواند در انجام فایربیس کنسول ، تحت تایید -> ورود به روش -> حوزه های مجاز.

    جاوا

    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();
    
    List<AuthUI.IdpConfig> providers = Arrays.asList(
            new AuthUI.IdpConfig.EmailBuilder()
                    .enableEmailLinkSignIn()
                    .setActionCodeSettings(actionCodeSettings)
                    .build()
    );
    Intent signInIntent = AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setAvailableProviders(providers)
            .build();
    signInLauncher.launch(signInIntent);

    Kotlin+KTX

    val 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()
    
    val providers = listOf(
            EmailBuilder()
                    .enableEmailLinkSignIn()
                    .setActionCodeSettings(actionCodeSettings)
                    .build()
    )
    val signInIntent = AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setAvailableProviders(providers)
            .build()
    signInLauncher.launch(signInIntent)
  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) {
            Intent signInIntent = AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setEmailLink(link)
                    .setAvailableProviders(providers)
                    .build();
            signInLauncher.launch(signInIntent);
        }
    }

    Kotlin+KTX

    if (AuthUI.canHandleIntent(intent)) {
        val extras = intent.extras ?: return
        val link = extras.getString(ExtraConstants.EMAIL_LINK_SIGN_IN)
        if (link != null) {
            val signInIntent = AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setEmailLink(link)
                    .setAvailableProviders(providers)
                    .build()
            signInLauncher.launch(signInIntent)
        }
    }
  7. اختیاری صلیب علامت لینک ایمیل دستگاه در پشتیبانی می شود، به این معنی که لینک از طریق برنامه Android شما ارسال می توان مورد استفاده برای ورود بر روی وب و یا برنامه های iOS خود را. به طور پیش فرض ، پشتیبانی از دستگاه متقابل فعال است. شما می توانید آن را با تماس غیر فعال کردن setForceSameDevice در EmailBuilder به عنوان مثال.

    مشاهده FirebaseUI وب و 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 سازنده:

جاوا

Intent signInIntent = AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(providers)
        .setLogo(R.drawable.my_great_logo)      // Set logo drawable
        .setTheme(R.style.MySuperAppTheme)      // Set theme
        .build();
signInLauncher.launch(signInIntent);

Kotlin+KTX

val signInIntent = AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(providers)
        .setLogo(R.drawable.my_great_logo) // Set logo drawable
        .setTheme(R.style.MySuperAppTheme) // Set theme
        .build()
signInLauncher.launch(signInIntent)

همچنین می توانید خط مشی رازداری و شرایط خدمات سفارشی تنظیم کنید:

جاوا

Intent signInIntent = AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(providers)
        .setTosAndPrivacyPolicyUrls(
                "https://example.com/terms.html",
                "https://example.com/privacy.html")
        .build();
signInLauncher.launch(signInIntent);

Kotlin+KTX

val signInIntent = AuthUI.getInstance()
        .createSignInIntentBuilder()
        .setAvailableProviders(providers)
        .setTosAndPrivacyPolicyUrls(
                "https://example.com/terms.html",
                "https://example.com/privacy.html")
        .build()
signInLauncher.launch(signInIntent)

مراحل بعدی

  • برای کسب اطلاعات بیشتر در مورد استفاده از و سفارشی FirebaseUI، را ببینید README فایل بر روی GitHub.
  • در صورت بروز مشکل در FirebaseUI پیدا کردن و می خواهم آن را گزارش دهید، استفاده از ردیاب شماره گیتهاب .