FirebaseUI, Firebase Authentication SDK टूल के ऊपर बनाई गई लाइब्रेरी है. यह आपके ऐप्लिकेशन में इस्तेमाल करने के लिए, ड्रॉप-इन यूज़र इंटरफ़ेस (यूआई) फ़्लो उपलब्ध कराती है. FirebaseUI से ये फ़ायदे मिलते हैं:
- एक से ज़्यादा सेवा देने वाली कंपनियां - ईमेल/पासवर्ड, ईमेल लिंक, फ़ोन से पुष्टि करने, Google साइन इन, Facebook Login, Twitter Login, और GitHub Login के लिए साइन इन फ़्लो.
- खाता मैनेजमेंट - खाता मैनेजमेंट से जुड़े टास्क मैनेज करने के लिए फ़्लो, जैसे कि खाता बनाना और पासवर्ड रीसेट करना.
- खाता लिंक करना - पहचान की पुष्टि करने वाली सभी सेवाओं के उपयोगकर्ता खातों को सुरक्षित तरीके से लिंक करने के लिए फ़्लो.
- अनाम उपयोगकर्ता को अपग्रेड करना - अनाम उपयोगकर्ताओं को सुरक्षित तरीके से अपग्रेड करने के लिए फ़्लो.
- पसंद के मुताबिक थीम - अपने ऐप्लिकेशन से मैच करने के लिए, FirebaseUI के लुक को पसंद के मुताबिक बनाएं. साथ ही, FirebaseUI ओपन सोर्स है, इसलिए प्रोजेक्ट को फ़ॉर्क किया जा सकता है और अपनी ज़रूरतों के हिसाब से उसे पसंद के मुताबिक बनाया जा सकता है.
- पासवर्ड के लिए Smart Lock - एक से ज़्यादा डिवाइसों पर तेज़ी से साइन इन करने के लिए, पासवर्ड के लिए Smart Lock के साथ अपने-आप इंटिग्रेट होने की सुविधा.
शुरू करने से पहले
अगर आपने पहले से ऐसा नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.
अपने ऐप्लिकेशन-लेवल की
build.gradle
फ़ाइल में, FirebaseUI की डिपेंडेंसी जोड़ें. अगर आपको Facebook या Twitter से साइन इन करने की सुविधा देनी है, तो Facebook और Twitter के 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' }
FirebaseUI Auth SDK टूल, Firebase SDK टूल और Google Play services SDK टूल पर निर्भर करता है.
Firebase कंसोल में, पुष्टि सेक्शन खोलें और साइन इन करने के उन तरीकों को चालू करें जिनका इस्तेमाल करना है. साइन इन करने के कुछ तरीकों के लिए, ज़्यादा जानकारी की ज़रूरत होती है. आम तौर पर, यह जानकारी सेवा के डेवलपर कंसोल में उपलब्ध होती है.
अगर आपने Google Sign-in की सुविधा चालू की है, तो:
कंसोल में कहा जाने पर, अपडेट की गई Firebase कॉन्फ़िगरेशन फ़ाइल (
google-services.json
) डाउनलोड करें. इसमें अब Google साइन इन के लिए ज़रूरी OAuth क्लाइंट की जानकारी शामिल है.इस अपडेट की गई कॉन्फ़िगरेशन फ़ाइल को अपने Android Studio प्रोजेक्ट में ले जाएं. साथ ही, अब काम न करने वाली उस कॉन्फ़िगरेशन फ़ाइल को बदलें. (अपने Android प्रोजेक्ट में Firebase जोड़ें लेख पढ़ें.)
अगर आपने अब तक अपने ऐप्लिकेशन का SHA फ़िंगरप्रिंट नहीं दिया है, तो Firebase कंसोल के सेटिंग पेज पर जाकर ऐसा करें. अपने ऐप्लिकेशन का SHA फ़िंगरप्रिंट पाने का तरीका जानने के लिए, अपने क्लाइंट की पुष्टि करना देखें.
अगर आपने Facebook या Twitter से साइन इन करने की सुविधा जोड़ी है, तो
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 ऐक्टिविटी के नतीजे के समझौते के लिए कॉलबैक रजिस्टर करता है:
Kotlin
// See: https://developer.android.com/training/basics/intents/result private val signInLauncher = registerForActivityResult( FirebaseAuthUIActivityResultContract(), ) { res -> this.onSignInResult(res) }
Java
// 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); } } );
FirebaseUI साइन इन फ़्लो को शुरू करने के लिए, साइन इन करने के अपने पसंदीदा तरीकों के साथ साइन इन इंटेंट बनाएं:
Kotlin
// 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)
Java
// 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);
साइन-इन फ़्लो पूरा होने के बाद, आपको onSignInResult
में नतीजा मिलेगा:
Kotlin
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. // ... } }
Java
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. // ... } }
साइन इन करने के तरीके सेट अप करना
ईमेल लिंक की पुष्टि करना
Firebase कंसोल में, पुष्टि सेक्शन खोलें. साइन इन करने का तरीका टैब पर, ईमेल/पासवर्ड की सुविधा देने वाली कंपनी को चालू करें. ध्यान दें कि ईमेल लिंक से साइन इन करने की सुविधा का इस्तेमाल करने के लिए, ईमेल/पासवर्ड से साइन इन करने की सुविधा चालू होनी चाहिए.
उसी सेक्शन में, साइन इन करने के लिए ईमेल लिंक (बिना पासवर्ड के साइन इन करें) का तरीका चालू करें और सेव करें पर क्लिक करें.
ईमेल-लिंक से साइन इन करने की सुविधा का इस्तेमाल करने के लिए, आपको Firebase डाइनैमिक लिंक भी चालू करने होंगे. Firebase कंसोल में, नेविगेशन बार में यूज़र ऐक्टिविटी में जाकर, डाइनैमिक लिंक पर क्लिक करें. शुरू करें पर क्लिक करें और कोई डोमेन जोड़ें. यहां चुना गया डोमेन, आपके उपयोगकर्ताओं को भेजे गए ईमेल लिंक में दिखेगा.
FirebaseUI में ईमेल लिंक से साइन इन करने की सुविधा चालू की जा सकती है. इसके लिए,
EmailBuilder
इंस्टेंस परenableEmailLinkSignIn
को कॉल करें. आपको एक मान्यActionCodeSettings
ऑब्जेक्ट भी उपलब्ध कराना होगा, जिसमेंsetHandleCodeInApp
को 'सही' पर सेट किया गया हो. इसके अलावा, आपकोsetUrl
को पास किए गए यूआरएल को व्हाइटलिस्ट में जोड़ना होगा. ऐसा करने के लिए, Firebase console में, पुष्टि -> साइन इन करने के तरीके -> अनुमति वाले डोमेन पर जाएं.Kotlin
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)
Java
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);
अगर आपको किसी खास गतिविधि में लिंक देखना है, तो कृपया यहां दिया गया तरीका अपनाएं. ऐसा न करने पर, लिंक आपके लॉन्चर ऐक्टिविटी पर रीडायरेक्ट कर देगा.
डीप लिंक मिलने के बाद, आपको पुष्टि करनी होगी कि हम इसे आपके लिए मैनेज कर सकते हैं. अगर हम ऐसा कर सकते हैं, तो आपको
setEmailLink
के ज़रिए हमें यह जानकारी देनी होगी.Kotlin
if (AuthUI.canHandleIntent(intent)) { val extras = intent.extras ?: return val link = extras.getString("email_link_sign_in") if (link != null) { val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setEmailLink(link) .setAvailableProviders(providers) .build() signInLauncher.launch(signInIntent) } }
Java
if (AuthUI.canHandleIntent(getIntent())) { if (getIntent().getExtras() == null) { return; } String link = getIntent().getExtras().getString("email_link_sign_in"); if (link != null) { Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setEmailLink(link) .setAvailableProviders(providers) .build(); signInLauncher.launch(signInIntent); } }
ज़रूरी नहीं क्रॉस-डिवाइस ईमेल लिंक से साइन इन करने की सुविधा काम करती है. इसका मतलब है कि आपके Android ऐप्लिकेशन से भेजे गए लिंक का इस्तेमाल, वेब या Apple ऐप्लिकेशन पर लॉग इन करने के लिए किया जा सकता है. डिफ़ॉल्ट रूप से, क्रॉस-डिवाइस सहायता की सुविधा चालू होती है. इसे बंद करने के लिए,
EmailBuilder
इंस्टेंस परsetForceSameDevice
को कॉल करें.ज़्यादा जानकारी के लिए, FirebaseUI-Web और FirebaseUI-iOS देखें.
साइन आउट करें
FirebaseUI, Firebase Authentication और सभी सोशल आइडेंटिटी प्रोवाइडर से साइन आउट करने के लिए आसान तरीके उपलब्ध कराता है:
Kotlin
AuthUI.getInstance() .signOut(this) .addOnCompleteListener { // ... }
Java
AuthUI.getInstance() .signOut(this) .addOnCompleteListener(new OnCompleteListener<Void>() { public void onComplete(@NonNull Task<Void> task) { // ... } });
आपके पास उपयोगकर्ता के खाते को पूरी तरह से मिटाने का विकल्प भी होता है:
Kotlin
AuthUI.getInstance() .delete(this) .addOnCompleteListener { // ... }
Java
AuthUI.getInstance() .delete(this) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { // ... } });
कस्टमाइज़ेशन
डिफ़ॉल्ट रूप से, FirebaseUI थीम के लिए AppCompat का इस्तेमाल करता है. इसका मतलब है कि यह आपके ऐप्लिकेशन की कलर स्कीम को अपने-आप अपना लेगा. अगर आपको और कस्टमाइज़ेशन की ज़रूरत है, तो साइन-इन Intent
बिल्डर में थीम और लोगो पास किया जा सकता है:
Kotlin
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)
Java
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
val signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setTosAndPrivacyPolicyUrls( "https://example.com/terms.html", "https://example.com/privacy.html", ) .build() signInLauncher.launch(signInIntent)
Java
Intent signInIntent = AuthUI.getInstance() .createSignInIntentBuilder() .setAvailableProviders(providers) .setTosAndPrivacyPolicyUrls( "https://example.com/terms.html", "https://example.com/privacy.html") .build(); signInLauncher.launch(signInIntent);
अगले चरण
- FirebaseUI का इस्तेमाल करने और उसे पसंद के मुताबिक बनाने के बारे में ज़्यादा जानने के लिए, GitHub पर README फ़ाइल देखें.
- अगर आपको FirebaseUI में कोई समस्या मिलती है और आपको उसकी शिकायत करनी है, तो GitHub समस्या ट्रैकर का इस्तेमाल करें.