Android में ईमेल लिंक का इस्तेमाल करके Firebase से पुष्टि करना

Firebase से पुष्टि करने की सुविधा का इस्तेमाल करके, उपयोगकर्ता को साइन इन करने के लिए लिंक वाला ईमेल भेजा जा सकता है. उस पर क्लिक करके, उपयोगकर्ता साइन इन कर सकता है. इस प्रक्रिया में, उपयोगकर्ता के ईमेल पते की भी पुष्टि की जाती है.

ईमेल से साइन इन करने के कई फ़ायदे हैं:

  • साइन-अप और साइन-इन करने में आसानी होती है.
  • अलग-अलग ऐप्लिकेशन में पासवर्ड के दोबारा इस्तेमाल होने का जोखिम कम होता है. इससे, चुने गए पासवर्ड की सुरक्षा भी कमज़ोर हो सकती है.
  • उपयोगकर्ता को प्रमाणित करने के साथ-साथ यह भी पुष्टि करने की क्षमता कि ईमेल पते का वैध मालिक ही उपयोगकर्ता है.
  • साइन इन करने के लिए, उपयोगकर्ता के पास सिर्फ़ एक ऐसा ईमेल खाता होना चाहिए जिसे ऐक्सेस किया जा सके. फ़ोन नंबर या सोशल मीडिया खाते के मालिकाना हक की ज़रूरत नहीं है.
  • उपयोगकर्ता, पासवर्ड दिए बिना (या याद रखे) बिना सुरक्षित रूप से साइन इन कर सकता है, यह मोबाइल डिवाइस पर जटिल काम हो सकता है.
  • अगर किसी मौजूदा उपयोगकर्ता ने पहले ईमेल आइडेंटिफ़ायर (पासवर्ड या फ़ेडरेटेड) के ज़रिए साइन इन किया था, तो उसे सिर्फ़ ईमेल से साइन इन करने के लिए अपग्रेड किया जा सकता है. उदाहरण के लिए, अगर कोई उपयोगकर्ता अपना पासवर्ड भूल गया है, तो वह अपना पासवर्ड रीसेट किए बिना भी साइन इन कर सकता है.

शुरू करने से पहले

अपना Android प्रोजेक्ट सेट अप करना

  1. अगर आपने पहले से Firebase को नहीं जोड़ा है, तो अपने Android प्रोजेक्ट में Firebase जोड़ें.

  2. अपने मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (आम तौर पर, <project>/<app-module>/build.gradle.kts या <project>/<app-module>/build.gradle) में, Android के लिए Firebase से पुष्टि करने वाली लाइब्रेरी के लिए डिपेंडेंसी जोड़ें. लाइब्रेरी के वर्शन को कंट्रोल करने के लिए, हम Firebase Android BoM का इस्तेमाल करने का सुझाव देते हैं.

    इसके अलावा, Firebase से पुष्टि करने की सुविधा सेट अप करने के दौरान, आपको अपने ऐप्लिकेशन में Google Play services SDK टूल जोड़ना होगा.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.2"))
    
        // Add 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")
    // Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.2.0")
    }

    Firebase Android BoM का इस्तेमाल करने पर, आपका ऐप्लिकेशन हमेशा Firebase की Android लाइब्रेरी के साथ काम करने वाले वर्शन का इस्तेमाल करेगा.

    (वैकल्पिक) BoM का इस्तेमाल किए बिना Firebase लाइब्रेरी डिपेंडेंसी जोड़ें

    अगर आप Firebase BoM का इस्तेमाल नहीं करना चाहते हैं, तो आपको उसकी डिपेंडेंसी लाइन में Firebase लाइब्रेरी के हर वर्शन की जानकारी देनी होगी.

    ध्यान दें कि अगर आप अपने ऐप्लिकेशन में कई Firebase लाइब्रेरी का इस्तेमाल करते हैं, तो हमारा सुझाव है कि लाइब्रेरी के वर्शन मैनेज करने के लिए, BoM का इस्तेमाल करें. इससे यह पक्का होता है कि ऐप्लिकेशन के सभी वर्शन काम करते हैं.

    dependencies {
        // Add 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:23.0.0")
    // Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.2.0")
    }
    क्या आपको Kotlin से जुड़े लाइब्रेरी मॉड्यूल की तलाश है? अक्टूबर 2023 (Firebase BoM 32.5.0) से, Kotlin और Java डेवलपर, दोनों मुख्य लाइब्रेरी मॉड्यूल पर निर्भर कर सकते हैं. ज़्यादा जानकारी के लिए, इस इनिशिएटिव के बारे में अक्सर पूछे जाने वाले सवाल देखें.

ईमेल लिंक से उपयोगकर्ताओं में साइन इन करने के लिए, आपको पहले अपने Firebase प्रोजेक्ट के लिए 'ईमेल की सेवा देने वाली कंपनी' और 'ईमेल लिंक' से साइन-इन करने का तरीका चालू करना होगा:

  1. Firebase कंसोल में, पुष्टि करें सेक्शन खोलें.
  2. साइन इन करने का तरीका टैब पर, ईमेल/पासवर्ड की सेवा देने वाली कंपनी को चालू करें. ध्यान दें ईमेल लिंक से साइन इन करने के लिए, ईमेल/पासवर्ड से साइन-इन करने की सुविधा चालू होनी चाहिए.
  3. इसी सेक्शन में, ईमेल लिंक (बिना पासवर्ड के साइन इन करना) से साइन इन करने के तरीके को चालू करें.
  4. सेव करें पर क्लिक करें.

पुष्टि करने की प्रोसेस शुरू करने के लिए, उपयोगकर्ता को ऐसा इंटरफ़ेस दिखाएं जो उसे अपना ईमेल पता देने के लिए कहता हो. इसके बाद, sendSignInLinkToEmail को कॉल करके अनुरोध करें कि Firebase, उपयोगकर्ता के ईमेल पर पुष्टि करने का लिंक भेजे.

  1. ActionCodeSettings ऑब्जेक्ट को बनाएं. इससे Firebase को ईमेल लिंक बनाने के तरीके के बारे में निर्देश मिलते हैं. नीचे दिए गए फ़ील्ड सेट करें:

    • url: एम्बेड करने के लिए डीप लिंक और पास की जाने वाली कोई दूसरी स्थिति. लिंक के डोमेन को अनुमति वाले डोमेन की 'Firebase कंसोल' सूची में 'अनुमति वाली सूची' में शामिल किया जाना चाहिए. इस सूची को 'साइन इन करने का तरीका' टैब (पुष्टि करने का तरीका -> साइन इन करने का तरीका) पर जाकर मिल सकता है. अगर उपयोगकर्ता के डिवाइस पर ऐप्लिकेशन इंस्टॉल नहीं है और वह इंस्टॉल नहीं हो पा रहा है, तो लिंक उसे इस यूआरएल पर रीडायरेक्ट कर देगा.
    • androidPackageName और IOSBundleId: Android या Apple डिवाइस पर साइन-इन लिंक खोले जाने पर इस्तेमाल किए जाने वाले ऐप्लिकेशन. मोबाइल ऐप्लिकेशन में ईमेल कार्रवाई के लिंक खोलने के लिए, Firebase डाइनैमिक लिंक को कॉन्फ़िगर करने के तरीके के बारे में ज़्यादा जानें.
    • handleCodeInApp: 'सही' पर सेट करें. बैंड के बाहर की दूसरी ईमेल कार्रवाइयों (पासवर्ड रीसेट करना और ईमेल की पुष्टि करना) से अलग, ऐप्लिकेशन में साइन इन की प्रक्रिया हमेशा पूरी करनी होगी. ऐसा इसलिए होता है, क्योंकि फ़्लो के आखिर में, उपयोगकर्ता से साइन इन होने की उम्मीद की जाती है और ऐप्लिकेशन में अनुमति की स्थिति बनी रहती है.
    • dynamicLinkDomain: अगर किसी प्रोजेक्ट के लिए एक से ज़्यादा कस्टम डाइनैमिक लिंक डोमेन तय किए जाते हैं, तो यह बताएं कि किसी मोबाइल ऐप्लिकेशन (उदाहरण के लिए, example.page.link) से लिंक खोलने के लिए, कौनसा डोमेन इस्तेमाल करना है. ऐसा न करने पर, पहला डोमेन अपने-आप चुन लिया जाता है.

    Kotlin+KTX

    val actionCodeSettings = actionCodeSettings {
        // URL you want to redirect back to. The domain (www.example.com) for this
        // URL must be whitelisted in the Firebase Console.
        url = "https://www.example.com/finishSignUp?cartId=1234"
        // This must be true
        handleCodeInApp = true
        setIOSBundleId("com.example.ios")
        setAndroidPackageName(
            "com.example.android",
            true, // installIfNotAvailable
            "12", // minimumVersion
        )
    }

    Java

    ActionCodeSettings actionCodeSettings =
            ActionCodeSettings.newBuilder()
                    // URL you want to redirect back to. The domain (www.example.com) for this
                    // URL must be whitelisted in the Firebase Console.
                    .setUrl("https://www.example.com/finishSignUp?cartId=1234")
                    // This must be true
                    .setHandleCodeInApp(true)
                    .setIOSBundleId("com.example.ios")
                    .setAndroidPackageName(
                            "com.example.android",
                            true, /* installIfNotAvailable */
                            "12"    /* minimumVersion */)
                    .build();

    ActionCodeSettings के बारे में ज़्यादा जानने के लिए, ईमेल से जुड़ी कार्रवाइयों में पास होने की स्थिति सेक्शन देखें.

  2. उपयोगकर्ता से उसका ईमेल मांगें.

  3. पुष्टि करने के लिए लिंक को उपयोगकर्ता के ईमेल पर भेजें. साथ ही, उपयोगकर्ता के ईमेल पते को सेव करें, ताकि जब उपयोगकर्ता उसी डिवाइस पर ईमेल से साइन इन कर ले, तो उसे सेव कर लें.

    Kotlin+KTX

    Firebase.auth.sendSignInLinkToEmail(email, actionCodeSettings)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Email sent.")
            }
        }

    Java

    FirebaseAuth auth = FirebaseAuth.getInstance();
    auth.sendSignInLinkToEmail(email, actionCodeSettings)
            .addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "Email sent.");
                    }
                }
            });

सुरक्षा से जुड़ी समस्याएं

साइन इन लिंक का इस्तेमाल, अनचाहे उपयोगकर्ता के तौर पर या किसी अनचाहे डिवाइस पर साइन इन करने से रोकने के लिए किया जाता है. इसके लिए, Firebase ऑथराइज़ेशन को साइन-इन फ़्लो पूरा करते समय उपयोगकर्ता का ईमेल पता देना ज़रूरी है. साइन-इन की प्रोसेस पूरी करने के लिए, यह ईमेल पता उस पते से मेल खाना चाहिए जिस पर साइन-इन लिंक भेजा गया था.

साइन-इन करने के लिए ईमेल भेजते समय, यह सुविधा उन उपयोगकर्ताओं के लिए आसान बनाई जा सकती है जिन्होंने साइन-इन लिंक को उसी डिवाइस पर खोला है जिस पर वे लिंक के लिए अनुरोध करते हैं. इसके लिए, उन्हें अपने ईमेल पते को स्थानीय तौर पर सेव करना होगा, ताकि शेयर की गई सेटिंग का इस्तेमाल करके उदाहरण के लिए ऐसा किया जा सके. इसके बाद, इस पते का इस्तेमाल करके लेन-देन पूरा करें. रीडायरेक्ट यूआरएल पैरामीटर में उपयोगकर्ता के ईमेल पते को पास न करें और इसका दोबारा इस्तेमाल करें. ऐसा करने से, सेशन इंजेक्शन शुरू हो सकते हैं.

साइन-इन पूरा होने के बाद, साइन-इन करने का ऐसा कोई भी पिछला तरीका हटा दिया जाएगा जिसकी पुष्टि नहीं हुई थी. साथ ही, मौजूदा सेशन अमान्य हो जाएंगे. उदाहरण के लिए, अगर किसी ने पहले भी उसी ईमेल और पासवर्ड का इस्तेमाल करके बिना पुष्टि वाला खाता बनाया था, तो उपयोगकर्ता का पासवर्ड हटा दिया जाएगा. ऐसा उस व्यक्ति को रोकने के लिए किया जाएगा जिसने मालिकाना हक का दावा करके, बिना पुष्टि वाले खाते को फिर से साइन इन करने के लिए, बिना पुष्टि वाले ईमेल और पासवर्ड का इस्तेमाल किया हो.

साथ ही, यह भी पक्का करें कि प्रोडक्शन में एचटीटीपीएस यूआरएल का इस्तेमाल किया जा रहा हो, ताकि आपका लिंक इंटरमीडियरी सर्वर से बीच में न आ सके.

Android ऐप्लिकेशन में साइन इन की प्रक्रिया पूरी करना

Firebase से पुष्टि करने की सुविधा, मोबाइल डिवाइस पर ईमेल का लिंक भेजने के लिए Firebase डाइनैमिक लिंक का इस्तेमाल करती है. मोबाइल ऐप्लिकेशन से साइन इन की प्रक्रिया पूरी करने के लिए, ऐप्लिकेशन को आने वाले ऐप्लिकेशन लिंक का पता लगाने, मूल डीप लिंक को पार्स करने, और साइन इन की प्रक्रिया को पूरा करने के लिए कॉन्फ़िगर करना होगा.

Firebase पुष्टि करने की सुविधा, Firebase डाइनैमिक लिंक का इस्तेमाल करके ऐसा लिंक भेजती है जिसे मोबाइल ऐप्लिकेशन में खोला जा सकता है. इस सुविधा का इस्तेमाल करने के लिए, डाइनैमिक लिंक को Firebase कंसोल में कॉन्फ़िगर करना ज़रूरी है.

  1. Firebase डाइनैमिक लिंक चालू करें:

    1. Firebase कंसोल में, डाइनैमिक लिंक सेक्शन खोलें.
    2. अगर आपने अभी तक डाइनैमिक लिंक की शर्तों को स्वीकार नहीं किया है और डाइनैमिक लिंक डोमेन बना लिया है, तो यह काम अभी कर लें.

      अगर आपने पहले ही डाइनैमिक लिंक डोमेन बना लिया है, तो उस पर ध्यान दें. आम तौर पर, डाइनैमिक लिंक डोमेन का उदाहरण नीचे दिया गया है:

      example.page.link

      आपको इस वैल्यू की ज़रूरत तब होगी, जब Apple या Android ऐप्लिकेशन को इनकमिंग लिंक को इंटरसेप्ट करने के लिए कॉन्फ़िगर किया जा रहा हो.

  2. Android ऐप्लिकेशन कॉन्फ़िगर करना:

    1. अपने Android ऐप्लिकेशन से इन लिंक को हैंडल करने के लिए, Firebase कंसोल प्रोजेक्ट सेटिंग में Android पैकेज का नाम तय करना ज़रूरी है. इसके अलावा, ऐप्लिकेशन सर्टिफ़िकेट का SHA-1 और SHA-256 भी देना होगा.
    2. अब जब आपने डाइनैमिक लिंक डोमेन जोड़ लिया है और यह पक्का कर लिया है कि आपका Android ऐप्लिकेशन सही तरीके से कॉन्फ़िगर किया गया है, तो लॉन्चर की गतिविधि से डाइनैमिक लिंक आपके ऐप्लिकेशन पर रीडायरेक्ट करेगा.
    3. अगर आपको डाइनैमिक लिंक को किसी खास गतिविधि पर रीडायरेक्ट करना है, तो आपको अपनी AndroidManifest.xml फ़ाइल में एक इंटेंट फ़िल्टर कॉन्फ़िगर करना होगा. इसके लिए, इंटेंट फ़िल्टर में डाइनैमिक लिंक डोमेन या ईमेल ऐक्शन हैंडलर जोड़ें. डिफ़ॉल्ट रूप से, ईमेल ऐक्शन हैंडलर को किसी डोमेन पर होस्ट किया जाता है. इसका उदाहरण नीचे दिया गया है:
      PROJECT_ID.firebaseapp.com/
    4. सीमाएं:
      1. वह यूआरएल न बताएं जिसे आपने इंटेंट फ़िल्टर में ActionCodeSettings पर सेट किया है.
      2. अपना डाइनैमिक लिंक डोमेन बनाते समय, हो सकता है कि आपने एक छोटा यूआरएल लिंक भी बनाया हो. यह छोटा यूआरएल पास नहीं किया जाएगा. इंटेंट फ़िल्टर को android:pathPrefix एट्रिब्यूट के साथ देखने के लिए, इसे कॉन्फ़िगर न करें. इसका मतलब है कि आप अपने ऐप्लिकेशन के अलग-अलग हिस्सों में अलग-अलग डाइनैमिक लिंक को नहीं पकड़ पाएंगे. हालांकि, लिंक में मौजूद mode क्वेरी पैरामीटर की जांच करके, यह देखा जा सकता है कि कौनसी कार्रवाई करने की कोशिश की जा रही है. इसके अलावा, SDK टूल के isSignInWithEmailLink जैसे तरीकों का इस्तेमाल करके, यह भी पता लगाया जा सकता है कि आपके ऐप्लिकेशन को मिला लिंक आपकी ज़रूरत के मुताबिक काम कर रहा है या नहीं.
    5. डाइनैमिक लिंक पाने के बारे में ज़्यादा जानकारी के लिए, Android डाइनैमिक लिंक पाने के निर्देश देखें.

ऊपर बताए गए तरीके से लिंक मिलने के बाद, पुष्टि करें कि यह ईमेल लिंक की पुष्टि करने के लिए है और साइन इन की प्रक्रिया पूरी करें.

Kotlin+KTX

val auth = Firebase.auth
val intent = intent
val emailLink = intent.data.toString()

// Confirm the link is a sign-in with email link.
if (auth.isSignInWithEmailLink(emailLink)) {
    // Retrieve this from wherever you stored it
    val email = "someemail@domain.com"

    // The client SDK will parse the code from the link for you.
    auth.signInWithEmailLink(email, emailLink)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Successfully signed in with email link!")
                val result = task.result
                // You can access the new user via result.getUser()
                // Additional user info profile *not* available via:
                // result.getAdditionalUserInfo().getProfile() == null
                // You can check if the user is new or existing:
                // result.getAdditionalUserInfo().isNewUser()
            } else {
                Log.e(TAG, "Error signing in with email link", task.exception)
            }
        }
}

Java

FirebaseAuth auth = FirebaseAuth.getInstance();
Intent intent = getIntent();
String emailLink = intent.getData().toString();

// Confirm the link is a sign-in with email link.
if (auth.isSignInWithEmailLink(emailLink)) {
    // Retrieve this from wherever you stored it
    String email = "someemail@domain.com";

    // The client SDK will parse the code from the link for you.
    auth.signInWithEmailLink(email, emailLink)
            .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "Successfully signed in with email link!");
                        AuthResult result = task.getResult();
                        // You can access the new user via result.getUser()
                        // Additional user info profile *not* available via:
                        // result.getAdditionalUserInfo().getProfile() == null
                        // You can check if the user is new or existing:
                        // result.getAdditionalUserInfo().isNewUser()
                    } else {
                        Log.e(TAG, "Error signing in with email link", task.getException());
                    }
                }
            });
}

Apple के ऐप्लिकेशन में, ईमेल लिंक की मदद से साइन-इन करने की प्रोसेस को मैनेज करने के तरीके के बारे में ज़्यादा जानने के लिए, Apple प्लैटफ़ॉर्म गाइड देखें.

वेब ऐप्लिकेशन में, ईमेल लिंक से साइन-इन करने की प्रोसेस को मैनेज करने का तरीका जानने के लिए, वेब गाइड देखें.

पुष्टि करने के इस तरीके को किसी मौजूदा उपयोगकर्ता के साथ भी जोड़ा जा सकता है. उदाहरण के लिए जिस उपयोगकर्ता की पुष्टि किसी अन्य कंपनी से पहले ही हो चुकी है, जैसे कि फ़ोन नंबर, वह अपने मौजूदा खाते में साइन-इन करने का यह तरीका जोड़ सकता है.

अंतर कार्रवाई के दूसरे आधे हिस्से में होगा:

Kotlin+KTX

// Construct the email link credential from the current URL.
val credential = EmailAuthProvider.getCredentialWithLink(email, emailLink)

// Link the credential to the current user.
Firebase.auth.currentUser!!.linkWithCredential(credential)
    .addOnCompleteListener { task ->
        if (task.isSuccessful) {
            Log.d(TAG, "Successfully linked emailLink credential!")
            val result = task.result
            // You can access the new user via result.getUser()
            // Additional user info profile *not* available via:
            // result.getAdditionalUserInfo().getProfile() == null
            // You can check if the user is new or existing:
            // result.getAdditionalUserInfo().isNewUser()
        } else {
            Log.e(TAG, "Error linking emailLink credential", task.exception)
        }
    }

Java

// Construct the email link credential from the current URL.
AuthCredential credential =
        EmailAuthProvider.getCredentialWithLink(email, emailLink);

// Link the credential to the current user.
auth.getCurrentUser().linkWithCredential(credential)
        .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Successfully linked emailLink credential!");
                    AuthResult result = task.getResult();
                    // You can access the new user via result.getUser()
                    // Additional user info profile *not* available via:
                    // result.getAdditionalUserInfo().getProfile() == null
                    // You can check if the user is new or existing:
                    // result.getAdditionalUserInfo().isNewUser()
                } else {
                    Log.e(TAG, "Error linking emailLink credential", task.getException());
                }
            }
        });

इसका इस्तेमाल, संवेदनशील कार्रवाई करने से पहले, ईमेल लिंक वाले उपयोगकर्ता की फिर से पुष्टि करने के लिए भी किया जा सकता है.

Kotlin+KTX

// Construct the email link credential from the current URL.
val credential = EmailAuthProvider.getCredentialWithLink(email, emailLink)

// Re-authenticate the user with this credential.
Firebase.auth.currentUser!!.reauthenticateAndRetrieveData(credential)
    .addOnCompleteListener { task ->
        if (task.isSuccessful) {
            // User is now successfully reauthenticated
        } else {
            Log.e(TAG, "Error reauthenticating", task.exception)
        }
    }

Java

// Construct the email link credential from the current URL.
AuthCredential credential =
        EmailAuthProvider.getCredentialWithLink(email, emailLink);

// Re-authenticate the user with this credential.
auth.getCurrentUser().reauthenticateAndRetrieveData(credential)
        .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // User is now successfully reauthenticated
                } else {
                    Log.e(TAG, "Error reauthenticating", task.getException());
                }
            }
        });

हालांकि, ऐसा हो सकता है कि फ़्लो किसी ऐसे डिवाइस पर खत्म हो जाए जिस पर ओरिजनल उपयोगकर्ता ने लॉग इन न किया हो. इस वजह से, हो सकता है कि यह फ़्लो पूरा न हो. ऐसे में, उपयोगकर्ता को एक गड़बड़ी दिखाई जा सकती है, ताकि उसे उसी डिवाइस पर लिंक खोलने के लिए मजबूर किया जा सके. कुछ स्टेट को लिंक में पास किया जा सकता है, ताकि कार्रवाई के टाइप और उपयोगकर्ता के uid के बारे में जानकारी दी जा सके.

अगर आपने अपना प्रोजेक्ट 15 सितंबर, 2023 या उसके बाद बनाया है, तो ईमेल इन्यूमरेशन सुरक्षा डिफ़ॉल्ट रूप से चालू रहती है. यह सुविधा आपके प्रोजेक्ट के उपयोगकर्ता खातों की सुरक्षा को बेहतर बनाती है. हालांकि, यह सुविधा fetchSignInMethodsForEmail() वाले तरीके को बंद कर देती है. हमने आइडेंटिफ़ायर के लिए पहले फ़्लो को लागू करने का सुझाव दिया था.

हालांकि, अपने प्रोजेक्ट के लिए ईमेल गिनती सुरक्षा को बंद किया जा सकता है, लेकिन हमारा सुझाव है कि ऐसा न करें.

ज़्यादा जानकारी के लिए, ईमेल एन्यूमरेशन प्रोटेक्शन वाला दस्तावेज़ देखें.

अगले चरण

जब कोई उपयोगकर्ता पहली बार साइन इन करता है, तो एक नया उपयोगकर्ता खाता बनाया जाता है और उपयोगकर्ता के क्रेडेंशियल से लिंक किया जाता है. इन क्रेडेंशियल में उपयोगकर्ता नाम और पासवर्ड, फ़ोन नंबर या पुष्टि करने वाली सेवा की जानकारी शामिल है. यह नया खाता आपके Firebase प्रोजेक्ट के हिस्से के तौर पर सेव किया जाता है. साथ ही, इसका इस्तेमाल आपके प्रोजेक्ट के हर ऐप्लिकेशन में किसी उपयोगकर्ता की पहचान करने के लिए किया जा सकता है. भले ही, उपयोगकर्ता ने किसी भी तरह से साइन इन किया हो.

  • अपने ऐप्लिकेशन में, FirebaseUser ऑब्जेक्ट से उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी ली जा सकती है. उपयोगकर्ताओं को मैनेज करें देखें.

  • अपने Firebase रीयल टाइम डेटाबेस और Cloud Storage के सुरक्षा नियमों में, auth वैरिएबल से साइन-इन किए हुए उपयोगकर्ता का यूनीक यूज़र आईडी पाया जा सकता है और उसका इस्तेमाल करके यह कंट्रोल किया जा सकता है कि उपयोगकर्ता कौनसा डेटा ऐक्सेस कर सकता है.

आप पुष्टि करने वाली सेवा देने वाली कंपनियों के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करके, उपयोगकर्ताओं को अपने ऐप्लिकेशन में साइन इन करने की अनुमति दे सकते हैं.

किसी उपयोगकर्ता को साइन आउट करने के लिए, signOut पर कॉल करें:

Kotlin+KTX

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();