FirebaseUI , Firebase प्रमाणीकरण SDK के शीर्ष पर निर्मित एक लाइब्रेरी है जो आपके ऐप में उपयोग के लिए ड्रॉप-इन UI प्रवाह प्रदान करती है। FirebaseUI निम्नलिखित लाभ प्रदान करता है:
- एकाधिक प्रदाता - ईमेल/पासवर्ड, ईमेल लिंक, फोन प्रमाणीकरण, Google साइन-इन, फेसबुक लॉगिन, ट्विटर लॉगिन और गिटहब लॉगिन के लिए साइन-इन प्रवाह।
- खाता प्रबंधन - खाता प्रबंधन कार्यों को संभालने के लिए प्रवाह, जैसे खाता निर्माण और पासवर्ड रीसेट।
- खाता लिंकिंग - पहचान प्रदाताओं के बीच उपयोगकर्ता खातों को सुरक्षित रूप से लिंक करने के लिए प्रवाहित होता है।
- अनाम उपयोगकर्ता उन्नयन - अनाम उपयोगकर्ताओं को सुरक्षित रूप से अपग्रेड करने के लिए प्रवाहित होता है।
- कस्टम थीम - अपने ऐप से मेल खाने के लिए FirebaseUI के लुक को कस्टमाइज़ करें। साथ ही, क्योंकि फायरबेसयूआई ओपन सोर्स है, आप प्रोजेक्ट को फोर्क कर सकते हैं और इसे अपनी आवश्यकताओं के लिए बिल्कुल अनुकूलित कर सकते हैं।
- पासवर्ड के लिए स्मार्ट लॉक - तेज़ क्रॉस-डिवाइस साइन-इन के लिए पासवर्ड के लिए स्मार्ट लॉक के साथ स्वचालित एकीकरण।
शुरू करने से पहले
यदि आपने पहले से ऐसा नहीं किया है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें ।
FirebaseUI के लिए डिपेंडेंसीज़ को अपनी ऐप-लेवल
build.gradle
फ़ाइल में जोड़ें। अगर आप फेसबुक या ट्विटर के साथ साइन-इन का समर्थन करना चाहते हैं, तो फेसबुक और ट्विटर एसडीके भी शामिल करें: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 सेवाओं SDK पर ट्रांजिटिव निर्भरताएं हैं।
फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें और उन साइन-इन विधियों को सक्षम करें जिनका आप समर्थन करना चाहते हैं। कुछ साइन-इन विधियों के लिए अतिरिक्त जानकारी की आवश्यकता होती है, जो आमतौर पर सेवा के डेवलपर कंसोल में उपलब्ध होती है।
अगर आप Google साइन-इन का समर्थन करते हैं और अभी तक अपने ऐप का SHA-1 फ़िंगरप्रिंट निर्दिष्ट नहीं किया है, तो ऐसा Firebase कंसोल के सेटिंग पृष्ठ से करें। अपने ऐप का SHA-1 फ़िंगरप्रिंट कैसे प्राप्त करें, इसके विवरण के लिए अपने क्लाइंट को प्रमाणित करना देखें।
यदि आप 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 गतिविधि परिणाम अनुबंध के लिए कॉलबैक पंजीकृत करता है:
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); } } );
Kotlin+KTX
// See: https://developer.android.com/training/basics/intents/result private val signInLauncher = registerForActivityResult( FirebaseAuthUIActivityResultContract() ) { res -> this.onSignInResult(res) }
FirebaseUI साइन इन फ़्लो शुरू करने के लिए, अपनी पसंदीदा साइन-इन विधियों के साथ एक साइन इन इंटेंट बनाएं:
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);
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
में प्राप्त होगा:
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. // ... } }
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. // ... } }
साइन-इन विधियाँ सेट करें
ईमेल लिंक प्रमाणीकरण
फायरबेस कंसोल में, प्रमाणीकरण अनुभाग खोलें। साइन इन विधि टैब पर, ईमेल/पासवर्ड प्रदाता को सक्षम करें। ध्यान दें कि ईमेल लिंक साइन-इन का उपयोग करने के लिए ईमेल/पासवर्ड साइन-इन सक्षम होना चाहिए।
उसी अनुभाग में, ईमेल लिंक (पासवर्ड रहित साइन-इन) साइन-इन विधि सक्षम करें और सहेजें पर क्लिक करें।
ईमेल-लिंक साइन इन का उपयोग करने के लिए आपको फायरबेस डायनेमिक लिंक को भी सक्षम करना होगा। फायरबेस कंसोल में, नेविगेशन बार में एंगेज के तहत डायनामिक लिंक पर क्लिक करें। प्रारंभ करना पर क्लिक करें और एक डोमेन जोड़ें। आपके द्वारा यहां चुना गया डोमेन आपके उपयोगकर्ताओं को भेजे गए ईमेल लिंक में दिखाई देगा।
आप ईमेल लिंक साइन इन को सक्षम कर सकते हैं FirebaseUI एक
EmailBuilder
इंस्टेंस परenableEmailLinkSignIn
को कॉल करके। आपकोsetHandleCodeInApp
सत्य पर सेट के साथ एक मान्यActionCodeSettings
ऑब्जेक्ट प्रदान करने की भी आवश्यकता होगी। इसके अतिरिक्त, आपको उस URL को श्वेतसूची में डालने की आवश्यकता है जिसे आपsetUrl
में पास करते हैं, जो कि Firebase कंसोल में प्रमाणीकरण -> साइन इन विधियों -> अधिकृत डोमेन के तहत किया जा सकता है।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);
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)
यदि आप किसी विशिष्ट गतिविधि में लिंक को पकड़ना चाहते हैं, तो कृपया यहां बताए गए चरणों का पालन करें । अन्यथा, लिंक आपकी लॉन्चर गतिविधि पर रीडायरेक्ट कर देगा।
एक बार जब आप डीप लिंक को पकड़ लेते हैं, तो आपको यह सत्यापित करने के लिए कॉल करना होगा कि हम इसे आपके लिए संभाल सकते हैं। यदि हम कर सकते हैं, तो आपको इसे हमें
setEmailLink
के माध्यम से भेजना होगा।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); } }
Kotlin+KTX
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) } }
वैकल्पिक क्रॉस डिवाइस ईमेल लिंक साइन इन समर्थित है, जिसका अर्थ है कि आपके एंड्रॉइड ऐप के माध्यम से भेजे गए लिंक का उपयोग आपके वेब या ऐप्पल ऐप में लॉग इन करने के लिए किया जा सकता है। डिफ़ॉल्ट रूप से, क्रॉस डिवाइस समर्थन सक्षम है। आप
EmailBuilder
इंस्टेंस परsetForceSameDevice
को कॉल करके इसे अक्षम कर सकते हैं।अधिक जानकारी के लिए फायरबेसयूआई-वेब और फायरबेसयूआई-आईओएस देखें।
साइन आउट
FirebaseUI, Firebase प्रमाणीकरण के साथ-साथ सभी सामाजिक पहचान प्रदाताओं से साइन आउट करने के लिए सुविधाजनक तरीके प्रदान करता है:
Java
AuthUI.getInstance() .signOut(this) .addOnCompleteListener(new OnCompleteListener<Void>() { public void onComplete(@NonNull Task<Void> task) { // ... } });
Kotlin+KTX
AuthUI.getInstance() .signOut(this) .addOnCompleteListener { // ... }
आप उपयोगकर्ता के खाते को पूरी तरह से हटा भी सकते हैं:
Java
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
बिल्डर को एक थीम और एक लोगो पास कर सकते हैं:
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+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)
आप एक कस्टम गोपनीयता नीति और सेवा की शर्तें भी सेट कर सकते हैं:
Java
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 के उपयोग और अनुकूलन के बारे में अधिक जानकारी के लिए, GitHub पर README फ़ाइल देखें।
- अगर आपको FirebaseUI में कोई समस्या मिलती है और आप उसकी रिपोर्ट करना चाहते हैं, तो GitHub समस्या ट्रैकर का उपयोग करें।