ईमेल कार्रवाइयों में पास होने की स्थिति

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

यह सुविधा इन सामान्य स्थितियों में काफ़ी मददगार साबित हो सकती है:

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

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

  • अन्य मामलों में, हो सकता है कि उपयोगकर्ता ने अपने मोबाइल डिवाइस से फ़्लो शुरू किया हो और पुष्टि के बाद, वह ब्राउज़र के बजाय अपने मोबाइल ऐप्लिकेशन पर वापस आना चाहता हो.

'जारी रखें' यूआरएल की मदद से स्टेटस पास करने की सुविधा, Firebase Auth की एक बेहतरीन सुविधा है. इससे उपयोगकर्ता अनुभव को बेहतर बनाया जा सकता है.

ईमेल कार्रवाइयों में स्टेटस/जारी रखने का यूआरएल पास करना

'जारी रखें' यूआरएल को सुरक्षित तरीके से पास करने के लिए, यूआरएल के डोमेन को Firebase कंसोल में श्वेतसूची में शामिल करना होगा. इसके लिए, पुष्टि सेक्शन में जाएं. अगर यह डोमेन पहले से साइन इन करने के तरीके टैब में मौजूद अनुमति वाले डोमेन की सूची में नहीं है, तो इसे जोड़ें.

पासवर्ड रीसेट करने का ईमेल या पुष्टि करने वाला ईमेल भेजते समय, ActionCodeSettings का एक उदाहरण देना ज़रूरी है. इसे ActionCodeSettings.Builder क्लास की मदद से बनाया जा सकता है. इस क्लास में ये तरीके शामिल हैं:

तरीका ब्यौरा
setUrl(String url)

लिंक (स्टेटस/जारी रखें यूआरएल) सेट करता है, जिसका अलग-अलग संदर्भों में अलग-अलग मतलब होता है:

  • जब लिंक को वेब ऐक्शन विजेट में मैनेज किया जाता है, तो यह continueUrl क्वेरी पैरामीटर में डीप लिंक होता है.
  • जब लिंक को सीधे ऐप्लिकेशन में मैनेज किया जाता है, तो यह डाइनैमिक लिंक के डीप लिंक में continueUrl क्वेरी पैरामीटर होता है.
setIOSBundleId(String iOSBundleId) iOS बंडल आईडी सेट करता है. अगर iOS ऐप्लिकेशन इंस्टॉल है, तो लिंक को उसमें खोलने की कोशिश की जाएगी. iOS ऐप्लिकेशन को Console में रजिस्टर करना होगा.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Android पैकेज का नाम सेट करता है. इससे, लिंक को किसी Android ऐप्लिकेशन में खोलने की कोशिश की जाएगी. हालांकि, ऐसा तब ही होगा, जब वह ऐप्लिकेशन आपके डिवाइस में इंस्टॉल हो. अगर installIfNotAvailable को true पर सेट किया गया है, तो इससे यह तय होता है कि अगर डिवाइस पर Android ऐप्लिकेशन काम करता है और वह पहले से इंस्टॉल नहीं है, तो उसे इंस्टॉल करना है या नहीं. अगर minimumVersion एट्रिब्यूट की वैल्यू दी गई है और ऐप्लिकेशन का पुराना वर्शन इंस्टॉल है, तो उपयोगकर्ता को ऐप्लिकेशन को अपग्रेड करने के लिए Play Store पर ले जाया जाता है. इसके लिए, Android ऐप्लिकेशन को Console में रजिस्टर करना ज़रूरी है.
setHandleCodeInApp(boolean status) ईमेल ऐक्शन लिंक को मोबाइल ऐप्लिकेशन या वेब लिंक में से पहले किसमें खोला जाएगा. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है. 'सही है' पर सेट होने पर, ऐक्शन कोड लिंक को यूनिवर्सल लिंक या Android ऐप्लिकेशन लिंक के तौर पर भेजा जाएगा. साथ ही, अगर ऐप्लिकेशन इंस्टॉल है, तो वह लिंक को खोल देगा. गलत होने पर, कोड सबसे पहले वेब विजेट पर भेजा जाएगा और फिर 'जारी रखें' पर क्लिक करने पर, ऐप्लिकेशन इंस्टॉल होने पर उस पर रीडायरेक्ट कर दिया जाएगा.
setDynamicLinkDomain(String dynamicLinkDomain) मौजूदा लिंक के लिए इस्तेमाल किए जाने वाले डाइनैमिक लिंक डोमेन (या सबडोमेन) को सेट करता है, अगर इसे Firebase डाइनैमिक लिंक का इस्तेमाल करके खोला जाना है. हर प्रोजेक्ट के लिए, एक से ज़्यादा डाइनैमिक लिंक डोमेन कॉन्फ़िगर किए जा सकते हैं. इसलिए, इस फ़ील्ड की मदद से, किसी एक को साफ़ तौर पर चुना जा सकता है. अगर कोई डोमेन नहीं दिया जाता है, तो डिफ़ॉल्ट रूप से पहले डोमेन का इस्तेमाल किया जाता है.

यहां दिए गए उदाहरण में, पुष्टि करने के लिए ईमेल से भेजा जाने वाला ऐसा लिंक भेजने का तरीका बताया गया है जो पहले मोबाइल ऐप्लिकेशन में Firebase डाइनैमिक लिंक (iOS ऐप्लिकेशन com.example.ios या Android ऐप्लिकेशन com.example.android) के तौर पर खुलेगा. डीप लिंक में, जारी रखें यूआरएल का पेलोड https://www.example.com/?email=user@example.com शामिल होगा.

Kotlin

val auth = Firebase.auth
val user = auth.currentUser!!

val url = "http://www.example.com/verify?uid=" + user.uid
val actionCodeSettings = ActionCodeSettings.newBuilder()
    .setUrl(url)
    .setIOSBundleId("com.example.ios")
    // The default for this is populated with the current android package name.
    .setAndroidPackageName("com.example.android", false, null)
    .build()

user.sendEmailVerification(actionCodeSettings)
    .addOnCompleteListener { task ->
        if (task.isSuccessful) {
            Log.d(TAG, "Email sent.")
        }
    }

Java

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

String url = "http://www.example.com/verify?uid=" + user.getUid();
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build();

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

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

  1. Firebase डाइनैमिक लिंक की सुविधा चालू करने के लिए:

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

      अगर आपने पहले से ही कोई Dynamic Links डोमेन बनाया हुआ है, तो उसका ध्यान रखें. आम तौर पर, Dynamic Links वाला डोमेन ऐसा दिखता है:

      example.page.link

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

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

    1. अगर आपको अपने Android ऐप्लिकेशन से इन लिंक को मैनेज करना है, तो Firebase Console के प्रोजेक्ट सेटिंग में Android पैकेज का नाम डालना होगा. इसके अलावा, ऐप्लिकेशन सर्टिफ़िकेट का SHA-1 और SHA-256 भी देना होगा.
    2. आपको अपनी AndroidManifest.xml फ़ाइल में, डीप लिंक के लिए इंटेंट फ़िल्टर को कॉन्फ़िगर करना होगा.
    3. इस बारे में ज़्यादा जानने के लिए, Android डाइनैमिक लिंक के निर्देश पाना लेख पढ़ें.
  3. iOS ऐप्लिकेशन कॉन्फ़िगर करना:

    1. अगर आपको अपने iOS ऐप्लिकेशन से इन लिंक को मैनेज करना है, तो Firebase Console के प्रोजेक्ट सेटिंग में iOS बंडल आईडी डालना होगा. इसके अलावा, ऐप्लिकेशन स्टोर आईडी और Apple डेवलपर टीम आईडी की जानकारी भी देनी होगी.
    2. आपको अपने ऐप्लिकेशन की क्षमताओं में, एफ़डीएल यूनिवर्सल लिंक डोमेन को असोसिएटेड डोमेन के तौर पर भी कॉन्फ़िगर करना होगा.
    3. अगर आपको अपना ऐप्लिकेशन iOS के 8 और उससे पहले के वर्शन पर उपलब्ध कराना है, तो आपको आने वाले यूआरएल के लिए, अपने iOS बंडल आईडी को कस्टम स्कीम के तौर पर सेट करना होगा.
    4. इस बारे में ज़्यादा जानने के लिए, iOS डाइनैमिक लिंक के निर्देश पाना लेख पढ़ें.

वेब ऐप्लिकेशन में ईमेल से जुड़ी कार्रवाइयां मैनेज करना

आपके पास यह तय करने का विकल्प होता है कि आपको ऐक्शन कोड के लिंक को पहले किसी वेब ऐप्लिकेशन से मैनेज करना है या नहीं. अगर आपको ऐसा करना है, तो लिंक मैनेज होने के बाद, उपयोगकर्ता को किसी दूसरे वेब पेज या मोबाइल ऐप्लिकेशन पर रीडायरेक्ट किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि मोबाइल ऐप्लिकेशन उपलब्ध हो. ऐसा करने के लिए, ActionCodeSettings.Builder ऑब्जेक्ट में setHandleCodeInApp(false) को कॉल करें. iOS बंडल आईडी या Android पैकेज का नाम देना ज़रूरी नहीं है. हालांकि, इनकी जानकारी देने पर, ईमेल ऐक्शन कोड पूरा होने पर उपयोगकर्ता को तय किए गए ऐप्लिकेशन पर रीडायरेक्ट किया जा सकेगा.

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

इस मामले में, continueUrl क्वेरी पैरामीटर में मौजूद लिंक, एक एफ़डीएल लिंक होगा. इसका पेलोड, ActionCodeSettings ऑब्जेक्ट में बताया गया URL होगा. आपके पास अपने ऐप्लिकेशन से आने वाले लिंक को बिना किसी अतिरिक्त डिपेंडेंसी के इंटरसेप्ट और मैनेज करने का विकल्प है. हालांकि, हमारा सुझाव है कि डीप लिंक को पार्स करने के लिए, FDL क्लाइंट लाइब्रेरी का इस्तेमाल करें.

ईमेल की पुष्टि जैसी ईमेल कार्रवाइयों को मैनेज करते समय, oobCode क्वेरी पैरामीटर के ऐक्शन कोड को डीप लिंक से पार्स करना ज़रूरी है.इसके बाद, बदलाव लागू होने के लिए, applyActionCode के ज़रिए इसे लागू करना होगा. इसका मतलब है कि ईमेल की पुष्टि की जानी चाहिए.

मोबाइल ऐप्लिकेशन में ईमेल से जुड़ी कार्रवाइयों को मैनेज करना

आपके पास यह तय करने का विकल्प होता है कि आपको ऐक्शन कोड लिंक को अपने मोबाइल ऐप्लिकेशन में पहले मैनेज करना है या नहीं. हालांकि, इसके लिए ज़रूरी है कि ऐप्लिकेशन इंस्टॉल हो. Android ऐप्लिकेशन के लिए, आपके पास installIfNotAvailable बूलियन के ज़रिए यह तय करने का विकल्प भी होता है कि अगर डिवाइस पर ऐप्लिकेशन काम करता है और वह पहले से इंस्टॉल नहीं है, तो उसे इंस्टॉल किया जाए. अगर लिंक पर किसी ऐसे डिवाइस से क्लिक किया जाता है जिस पर मोबाइल ऐप्लिकेशन काम नहीं करता, तो वह लिंक वेब पेज पर खुलता है. ऐसा करने के लिए, ActionCodeSettings.Builder ऑब्जेक्ट में setHandleCodeInApp(true) को कॉल करें. मोबाइल ऐप्लिकेशन के Android पैकेज का नाम या iOS बंडल आईडी भी बताना होगा.

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

इस मामले में, उपयोगकर्ता को भेजा गया मोबाइल ऐप्लिकेशन लिंक, एक एफ़डीएल लिंक होगा. इसका पेलोड, ऐक्शन कोड यूआरएल होगा, जिसे Console में क्वेरी पैरामीटर oobCode, mode, apiKey, और continueUrl के साथ कॉन्फ़िगर किया गया है. बाद वाला URL, ActionCodeSettings ऑब्जेक्ट में बताए गए मूल URL होगा. आपके पास अपने ऐप्लिकेशन से आने वाले लिंक को बिना किसी और डिपेंडेंसी के इंटरसेप्ट और मैनेज करने का विकल्प है. हालांकि, हमारा सुझाव है कि आप डीप लिंक को पार्स करने के लिए, एफ़डीएल क्लाइंट लाइब्रेरी का इस्तेमाल करें. ऐक्शन कोड को सीधे मोबाइल ऐप्लिकेशन से लागू किया जा सकता है. यह उसी तरह से किया जाता है जिस तरह ईमेल हैंडलर को पसंद के मुताबिक बनाने वाले सेक्शन में बताए गए वेब फ़्लो से किया जाता है.

ईमेल की पुष्टि जैसी ईमेल कार्रवाइयों को मैनेज करते समय, oobCode क्वेरी पैरामीटर के ऐक्शन कोड को डीप लिंक से पार्स करना ज़रूरी है.इसके बाद, बदलाव लागू होने के लिए, applyActionCode के ज़रिए इसे लागू करना होगा. इसका मतलब है कि ईमेल की पुष्टि की जानी चाहिए.