ईमेल कार्रवाइयों में पासिंग स्टेट

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

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

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

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

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

जारी रखने वाले यूआरएल के ज़रिए स्थिति पास करने की सुविधा एक बेहतरीन सुविधा है. Firebase Auth इस सुविधा से उपयोगकर्ता अनुभव को काफ़ी बेहतर बनाती है.

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

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

पासवर्ड रीसेट ईमेल या पुष्टि करने वाला ईमेल भेजते समय, firebase.auth.ActionCodeSettings इंस्टेंस देना ज़रूरी है. यह इंटरफ़ेस नीचे दिए गए पैरामीटर का इस्तेमाल करता है:

पैरामीटर टाइप जानकारी
url स्ट्रिंग

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

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

नीचे दिए गए उदाहरण में, कस्टम डाइनैमिक लिंक डोमेन example.page.link का इस्तेमाल करके, ईमेल की पुष्टि करने वाले लिंक को भेजने का तरीका बताया गया है. यह लिंक, मोबाइल ऐप्लिकेशन में सबसे पहले Firebase डाइनैमिक लिंक के तौर पर खुलेगा. यह लिंक, कस्टम डाइनैमिक लिंक डोमेन 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.
  });

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

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

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

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

      example.page.link

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

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

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

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

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

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

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

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

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

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

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

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

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

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