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

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

यह सुविधा, इन सामान्य स्थितियों में बहुत काम आ सकती है:

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

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

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

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

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

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

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

पैरामीटर टाइप ब्यौरा
url स्ट्रिंग

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

  • जब वेब ऐक्शन विजेट में लिंक को हैंडल किया जाता है, तो यह डीप लिंक continueUrl क्वेरी पैरामीटर में होता है.
  • जब लिंक को सीधे ऐप्लिकेशन में हैंडल किया जाता है, तो यह continueUrl डाइनैमिक लिंक के डीप लिंक में क्वेरी पैरामीटर होता है.
iOSBundleId स्ट्रिंग यह बंडल आईडी सेट करता है. अगर Apple का कोई ऐप्लिकेशन इंस्टॉल है, तो यह उसमें लिंक खोलने की कोशिश करेगा, अगर वह इंस्टॉल है. ऐप्लिकेशन को कंसोल में रजिस्टर करना ज़रूरी है. अगर कोई बंडल आईडी नहीं दिया जाता है, तो इस फ़ील्ड की वैल्यू, ऐप्लिकेशन के मुख्य बंडल के बंडल आईडी पर सेट हो जाती है.
androidPackageName स्ट्रिंग यह Android पैकेज का नाम सेट करता है. अगर Android का कोई ऐप्लिकेशन इंस्टॉल है, तो यह उसमें लिंक खोलने की कोशिश करेगा.
androidInstallApp बूलियन इससे यह तय होता है कि अगर डिवाइस पर Android ऐप्लिकेशन इंस्टॉल किया जा सकता है और वह पहले से इंस्टॉल नहीं है, तो उसे इंस्टॉल किया जाए या नहीं. अगर packageName के बिना यह फ़ील्ड दिया जाता है, तो एक गड़बड़ी दिखती है. इसमें बताया जाता है कि इस फ़ील्ड के साथ packageName देना ज़रूरी है.
androidMinimumVersion स्ट्रिंग यह ऐप्लिकेशन का वह कम से कम वर्शन है जो इस प्रोसेस में काम करता है. अगर minimumVersion तय किया जाता है और ऐप्लिकेशन का कोई पुराना वर्शन इंस्टॉल है, तो उपयोगकर्ता को Play Store पर ले जाया जाता है, ताकि वह ऐप्लिकेशन को अपग्रेड कर सके. Android ऐप्लिकेशन को कंसोल में रजिस्टर करना ज़रूरी है.
handleCodeInApp बूलियन इससे यह तय होता है कि ईमेल ऐक्शन लिंक, पहले किसी मोबाइल ऐप्लिकेशन में खुलेगा या वेब लिंक में. डिफ़ॉल्ट रूप से, इसकी वैल्यू 'गलत' होती है. इसे 'सही' पर सेट करने पर, ऐक्शन कोड लिंक को यूनिवर्सल लिंक या Android ऐप्लिकेशन लिंक के तौर पर भेजा जाएगा. अगर ऐप्लिकेशन इंस्टॉल है, तो वह इसे खोलेगा. अगर इसकी वैल्यू 'गलत' है, तो कोड पहले वेब विजेट को भेजा जाएगा. इसके बाद, 'जारी रखें' पर क्लिक करने पर, अगर ऐप्लिकेशन इंस्टॉल है, तो उपयोगकर्ता को उस पर रीडायरेक्ट किया जाएगा.
dynamicLinkDomain स्ट्रिंग (अब यह सुविधा काम नहीं करती. इसके बजाय, `linkDomain` का इस्तेमाल करें) इससे डाइनैमिक लिंक का डोमेन (या सबडोमेन) सेट होता है. इसका इस्तेमाल, मौजूदा लिंक के लिए तब किया जाता है, जब उसे Firebase डाइनैमिक लिंक का इस्तेमाल करके खोला जाना हो. हर प्रोजेक्ट के लिए, एक से ज़्यादा डाइनैमिक लिंक डोमेन कॉन्फ़िगर किए जा सकते हैं. इस फ़ील्ड की मदद से, इनमें से किसी एक को साफ़ तौर पर चुना जा सकता है. अगर कोई डोमेन नहीं दिया जाता है, तो डिफ़ॉल्ट रूप से पहले डोमेन का इस्तेमाल किया जाता है. linkDomain स्ट्रिंग यह Firebase Hosting का कोई ऐसा कस्टम डोमेन है जिसका इस्तेमाल तब किया जाता है, जब लिंक को किसी खास मोबाइल ऐप्लिकेशन के ज़रिए खोला जाना हो. यह डोमेन, Firebase Hosting में कॉन्फ़िगर किया गया होना चाहिए और यह प्रोजेक्ट का मालिकाना हक वाला होना चाहिए. यह डिफ़ॉल्ट Hosting डोमेन (`web.app` या `firebaseapp.com`) नहीं हो सकता. यह, अब काम न करने वाली `dynamicLinkDomain` सेटिंग की जगह लेता है.

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

final user = FirebaseAuth.instance.currentUser;

final actionCodeSettings = ActionCodeSettings(
  url: "http://www.example.com/verify?email=${user?.email}",
  iOSBundleId: "com.example.ios",
  androidPackageName: "com.example.android",
);

await user?.sendEmailVerification(actionCodeSettings);

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

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

    1. Firebase कंसोल में, डाइनैमिक लिंक सेक्शन खोलें.

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

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

      example.page.link

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

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

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

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

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

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

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

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

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

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

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

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

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