ईमेल क्रियाओं में राज्य पास करना

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

यह निम्नलिखित सामान्य परिदृश्यों में अत्यंत उपयोगी हो सकता है:

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

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

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

एक जारी यूआरएल के माध्यम से राज्य को पारित करने की क्षमता एक शक्तिशाली विशेषता है जो फायरबेस ऑथ प्रदान करती है और जो उपयोगकर्ता अनुभव को महत्वपूर्ण रूप से बढ़ा सकती है।

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

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

पासवर्ड रीसेट ईमेल या सत्यापन ईमेल भेजते समय एक एक्शनकोडसेटिंग इंस्टेंस प्रदान करने की आवश्यकता होती है। इसे संबंधित ActionCodeSettings.Builder वर्ग के साथ बनाया जा सकता है जिसमें निम्नलिखित विधियाँ शामिल हैं:

तरीका विवरण
setUrl(String url)

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

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

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

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.");
                }
            }
        });

Kotlin+KTX

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.")
            }
        }

एक मोबाइल एप्लिकेशन में खोले जाने के लिए एक लिंक भेजते समय फायरबेस ऑथ फायरबेस डायनेमिक लिंक का उपयोग करता है। इस सुविधा का उपयोग करने के लिए, डायनेमिक लिंक्स को फायरबेस कंसोल में कॉन्फ़िगर करने की आवश्यकता है।

  1. फायरबेस डायनेमिक लिंक सक्षम करें:

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

      यदि आपने पहले ही एक डायनामिक लिंक डोमेन बना लिया है, तो उस पर ध्यान दें। एक डायनामिक लिंक डोमेन आमतौर पर निम्न उदाहरण जैसा दिखता है:

      example.page.link

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

  2. एंड्रॉइड एप्लिकेशन को कॉन्फ़िगर करना:

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

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

वेब एप्लिकेशन में ईमेल क्रियाओं को संभालना

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

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

इस मामले में, ContinueUrl क्वेरी पैरामीटर continueUrl भीतर लिंक एक FDL लिंक होगा जिसका पेलोड ActionCodeSettings ऑब्जेक्ट में निर्दिष्ट URL है। जब आप बिना किसी अतिरिक्त निर्भरता के अपने ऐप से आने वाले लिंक को इंटरसेप्ट और हैंडल कर सकते हैं, तो हम आपके लिए डीप लिंक को पार्स करने के लिए FDL क्लाइंट लाइब्रेरी का उपयोग करने की सलाह देते हैं।

ईमेल सत्यापन जैसे ईमेल कार्यों को संभालते समय, oobCode क्वेरी पैरामीटर से क्रिया कोड को डीप लिंक से पार्स करने की आवश्यकता होती है और फिर परिवर्तन को प्रभावी करने के लिए applyActionCode के माध्यम से लागू किया जाता है, अर्थात सत्यापित होने के लिए ईमेल।

मोबाइल एप्लिकेशन में ईमेल क्रियाओं को संभालना

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

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

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

ईमेल सत्यापन जैसे ईमेल कार्यों को संभालते समय, oobCode क्वेरी पैरामीटर से क्रिया कोड को डीप लिंक से पार्स करने की आवश्यकता होती है और फिर परिवर्तन को प्रभावी करने के लिए applyActionCode के माध्यम से लागू किया जाता है, अर्थात सत्यापित होने के लिए ईमेल।