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

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

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

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

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

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

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

ईमेल क्रियाओं में स्थिति पास करना/यूआरएल जारी रखना

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

पासवर्ड रीसेट ईमेल या सत्यापन ईमेल भेजते समय एक firebase.auth.ActionCodeSettings उदाहरण प्रदान करना आवश्यक है। यह इंटरफ़ेस निम्नलिखित पैरामीटर लेता है:

पैरामीटर प्रकार विवरण
url डोरी

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

  • जब लिंक को वेब एक्शन विजेट्स में संभाला जाता है, तो यह continueUrl क्वेरी पैरामीटर में डीप लिंक होता है।
  • जब लिंक को सीधे ऐप में प्रबंधित किया जाता है, तो यह डायनामिक लिंक के डीप लिंक में continueUrl क्वेरी पैरामीटर है।
iOS ({बंडलआईडी: स्ट्रिंग}|अपरिभाषित) iOS बंडल आईडी सेट करता है। यदि यह इंस्टॉल है तो यह iOS ऐप में लिंक को खोलने का प्रयास करेगा। iOS ऐप को कंसोल में पंजीकृत होना आवश्यक है.
android ({पैकेजनाम: स्ट्रिंग, इंस्टॉलऐप:बूलियन|अपरिभाषित, न्यूनतम संस्करण: स्ट्रिंग|अपरिभाषित}|अपरिभाषित) एंड्रॉइड पैकेज का नाम सेट करता है। यदि एंड्रॉइड ऐप इंस्टॉल है तो यह लिंक को उसमें खोलने का प्रयास करेगा। यदि installApp पास हो गया है, तो यह निर्दिष्ट करता है कि एंड्रॉइड ऐप इंस्टॉल करना है या नहीं, यदि डिवाइस इसका समर्थन करता है और ऐप पहले से इंस्टॉल नहीं है। यदि यह फ़ील्ड packageName के बिना प्रदान की जाती है, तो एक त्रुटि उत्पन्न होती है जो बताती है कि packageName इस फ़ील्ड के साथ संयोजन में प्रदान किया जाना चाहिए। यदि minimumVersion निर्दिष्ट है, और ऐप का पुराना संस्करण इंस्टॉल किया गया है, तो उपयोगकर्ता को ऐप को अपग्रेड करने के लिए प्ले स्टोर पर ले जाया जाता है। एंड्रॉइड ऐप को कंसोल में पंजीकृत होना आवश्यक है।
handleCodeInApp (बूलियन|अपरिभाषित) क्या ईमेल कार्रवाई लिंक पहले मोबाइल ऐप या वेब लिंक में खोला जाएगा। डिफॉल्ट गलत है। सही पर सेट होने पर, एक्शन कोड लिंक को यूनिवर्सल लिंक या एंड्रॉइड ऐप लिंक के रूप में भेजा जाएगा और इंस्टॉल होने पर ऐप द्वारा खोला जाएगा। गलत स्थिति में, कोड पहले वेब विजेट पर भेजा जाएगा और फिर इंस्टॉल होने पर जारी रखने पर ऐप पर रीडायरेक्ट किया जाएगा।
dynamicLinkDomain (स्ट्रिंग|अपरिभाषित) यदि वर्तमान लिंक को फायरबेस डायनेमिक लिंक का उपयोग करके खोला जाना है तो डायनेमिक लिंक डोमेन (या उपडोमेन) को वर्तमान लिंक के लिए उपयोग करने के लिए सेट करता है। चूंकि प्रति प्रोजेक्ट कई डायनेमिक लिंक डोमेन कॉन्फ़िगर किए जा सकते हैं, यह फ़ील्ड स्पष्ट रूप से किसी एक को चुनने की क्षमता प्रदान करता है। यदि कोई भी उपलब्ध नहीं कराया गया है, तो पहला डोमेन डिफ़ॉल्ट रूप से उपयोग किया जाता है।

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

var actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  },
  handleCodeInApp: true,
  // When multiple custom dynamic link domains are defined, specify which
  // one to use.
  dynamicLinkDomain: "example.page.link"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

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

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

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

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

      example.page.link

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

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

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

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

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

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

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

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

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

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

आप निर्दिष्ट कर सकते हैं कि क्या आप पहले अपने मोबाइल एप्लिकेशन के भीतर एक्शन कोड लिंक को संभालना चाहते हैं, बशर्ते वह इंस्टॉल हो। एंड्रॉइड एप्लिकेशन के साथ, आपके पास android.installApp के माध्यम से यह निर्दिष्ट करने की क्षमता भी है कि ऐप इंस्टॉल किया जाना है यदि डिवाइस इसका समर्थन करता है और यह पहले से इंस्टॉल नहीं है। यदि लिंक को किसी ऐसे उपकरण से क्लिक किया जाता है जो मोबाइल एप्लिकेशन का समर्थन नहीं करता है, तो यह इसके बजाय एक वेब पेज से खुलता है। यह firebase.auth.ActionCodeSettings ऑब्जेक्ट में handleCodeInApp true पर सेट करके किया जाता है। मोबाइल एप्लिकेशन का एंड्रॉइड पैकेज नाम या आईओएस बंडल आईडी भी निर्दिष्ट करना होगा।

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

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

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